1

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 がクリックされたかを示すことができません。

4

0 に答える 0