0

ContextMenuStrip項目の 1 つに、DropDownItems動的に追加されたオブジェクトのコレクションであるプロパティがある場所がありToolStripMenuItemます。サブアイテムClickイベントを処理すると、送信者のタイプは ですToolStripMenuItemOwnerToolStripDropDownMenu. これから「ホスト」ContextMenuStripを決定する方法が見つかりません。Owner独自のプロパティはなく、 Parentnull を返します。

以下の@Steveによって投稿されたコードのこの適応を使用すると:

Dim dropDownItem = DirectCast(sender, ToolStripDropDownItem)
Dim menu As ContextMenuStrip = DirectCast((((dropDownItem.DropDown).OwnerItem).OwnerItem).Owner, ContextMenuStrip)
Dim grid = menu.SourceControl

thenmenu.SourceControlNothing、まだトップレベルを処理するとき、つまり、このような非ドロップダウンメニュー項目のクリック

Dim item As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
Dim strip As ContextMenuStrip = DirectCast(item.Owner, ContextMenuStrip)
Dim grid As DataGridView = DirectCast(strip.SourceControl, DataGridView)

次に、探していたグリッドを取得します。

4

1 に答える 1

0

If I understand correctly, you want to reach the ContextMenuStrip object from inside an Click event of a ToolStripMenuItem belonging to a ToolStripDropDownMenu.

If this is the case then

   private void TestToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ToolStripDropDownItem x = sender as ToolStripDropDownItem;
        if (x != null)
        {
            ContextMenuStrip k = (((x.DropDown).OwnerItem).OwnerItem).Owner as ContextMenuStrip;
            k.ForeColor = Color.Red; // as an example.
        }
    }
于 2012-10-01T10:13:31.217 に答える