2

私は を持ってContextMenuStripDataGridViewます。呼び出しの結果が null になることに気付いた後cm.FindForm()、コンテキスト メニューをグリッドのContextMenuStripプロパティに追加しましたが、それは役に立ちません。

FindForm()コンテキストメニューがフォームを返すように、他に欠けている設定はありますか?

:フォームにドラッグして、ビジュアルスタジオデザイナーを介してコンテキストメニューを追加しました。また、メイン メニュー (a MenuStrip) にはこの動作が表示されずFindForm()、フォームが適切に返されます。

編集:ハンスのために(なぜ私は自分のやり方で物事を行うのか)

以前は、すべてのコードを 1 つの長い Form1.cs にまとめていましたが、これは明らかに保守が困難です。すべてのコードをコンポーネントごとに個別のクラスであるフレームワークに分離し、必要に応じてインジェクションによって他のクラスを参照し、保守と追跡が容易になることを発見しました。

コントロールではないコンポーネントについては、コンポーネントが属するフォームをコンストラクターに渡しますが、コントロールであるコンポーネントについては、FindForm()メソッドがショートカットであることがわかりました。フレームワークの基本クラスは、FindForm(). したがって、各コンポーネントは Form プロパティを介してフォームにアクセスできます。

現在、コンテキスト メニュー コントロールがその親コン​​トロール セットを取得していないため、FindForm()動作していないことがわかりました。

4

0 に答える 0