TextBoxコントロールの配列を含むダイアログがあります。これらのそれぞれには、同じコンテキスト メニュー コントロール「ebContextMenu 」を指すように設定されたContextMenuStripプロパティがあります。ユーザーがテキスト ボックスを右クリックすると、コンテキスト メニューが表示され、ユーザーは項目を選択します。これにより、アイテムのClickイベント ハンドラーがトリガーされます。
私の質問は、イベント ハンドラーで、コンテキスト メニューを表示するために右クリックされた特定の TextBox コントロールをどのように把握するかということです。
背景情報:
メニュー項目のClickハンドラーは次のように始まります。
ToolStripMenuItem tsmi = (ToolStripMenuItem)sender;
ToolStrip ts = tsmi.Owner;
Control ctl = ts.Parent;
ctl変数の TextBox への参照を期待していましたが、NULL として返されます。
私の最初のアプローチは、テキスト ボックスのClickイベントをキャッチすることでした。イベント ハンドラーで右ボタンを確認し、コンテキスト メニュー項目のTagプロパティを設定して、コンテキスト メニューをトリガーしました。次に、メニュー項目のClickイベント ハンドラーで、Tagプロパティをチェックして、クリックされた TextBox を特定できます。
問題は、これらのコントロールの右ボタン イベントを取得できなかったことです。代わりにシステム レベルのコンテキスト メニューがポップアップしていたので、ContextMenuStrip プロパティの使用に切り替えました。これでは、 Tagプロパティを設定して、どの TextBox がクリックされたかを示すことができません。