私は を持ってContextMenuStrip
いDataGridView
ます。呼び出しの結果が null になることに気付いた後cm.FindForm()
、コンテキスト メニューをグリッドのContextMenuStrip
プロパティに追加しましたが、それは役に立ちません。
FindForm()
コンテキストメニューがフォームを返すように、他に欠けている設定はありますか?
注:フォームにドラッグして、ビジュアルスタジオデザイナーを介してコンテキストメニューを追加しました。また、メイン メニュー (a MenuStrip
) にはこの動作が表示されずFindForm()
、フォームが適切に返されます。
編集:ハンスのために(なぜ私は自分のやり方で物事を行うのか)
以前は、すべてのコードを 1 つの長い Form1.cs にまとめていましたが、これは明らかに保守が困難です。すべてのコードをコンポーネントごとに個別のクラスであるフレームワークに分離し、必要に応じてインジェクションによって他のクラスを参照し、保守と追跡が容易になることを発見しました。
コントロールではないコンポーネントについては、コンポーネントが属するフォームをコンストラクターに渡しますが、コントロールであるコンポーネントについては、FindForm()
メソッドがショートカットであることがわかりました。フレームワークの基本クラスは、FindForm()
. したがって、各コンポーネントは Form プロパティを介してフォームにアクセスできます。
現在、コンテキスト メニュー コントロールがその親コントロール セットを取得していないため、FindForm()
動作していないことがわかりました。