ContextMenuStrip を TabControl にアタッチし、次の処理を行う OnMouseDown のハンドラーを設定しました。
if (e.Button != MouseButtons.Right) {
return;
}
for (var i = 0; i < tabControl1.TabCount; ++i) {
var point = new Point(e.X, e.Y);
if (tabControl1.GetTabRect(i).Contains(point)) {
tabPageContextMenu.Show(tabControl1, point);
}
}
これは ContextMenuStrip を適切に表示しますが、ContextMenuStrip に含まれる MenuItem の Click イベント内では、ContextMenuStrip を実際に生成した基になる TabControl または TabPage にアクセスできないようです。
質問は次のようになります: 元のコントロールに最もよくアクセスするにはどうすればよいでしょうか? 明らかに、MouseDown ハンドラーでは、コントロールをプライベート クラス変数に割り当てることができましたが、現在見落としているいくつかのプロパティを介した標準的な方法があると想定しました。
前もって感謝します!