1

アイテムの所有ツールストリップを見つけようとしているときに、アイテムの所有者を見るだけでは簡単ではないことがわかりました。以下は、動作すると思われる疑似コードです。誰でもこれに問題が見られますか、それともすべての場合に機能するはずですか?

(1) Item.Owner の型は ToolStrip ですか?

(2) はい、返品します。Item.Owner

(3) いいえ、アイテム = Item.OwnerItem. (1)へ。

到着予定時刻:

試験は一般試験にしたいです。したがって、ToolStrip をテストする代わりに、ToolStrip、MenuStrip、StatusStrip、または ContextMenuStrip をテストする必要があります。

上記の 4 つは、ToolStripDropDown、ToolStripDropDownMenu、ToolStripOverflow などの他の ToolStrip 派生コントロールと何が違うのでしょうか?

ETA2: 無視して、絶対コイ!

私が知る限り、それは Control.TopLevelControl と関係があります。フォームに追加できない上記の 3 つのコントロールは、それ自体の TopLevelControl を返します。4 つの有効なコントロールは、フォームに追加される前は TopLevelControl に対して何も返さず、追加された後はフォーム自体を返します。

4

3 に答える 3

4

これはうまくいきました:

        ToolStrip owner = testToolStripMenuItem.Owner;
        while (owner is ToolStripDropDownMenu)
            owner = (owner as ToolStripDropDownMenu).OwnerItem.Owner;
于 2010-02-12T22:23:30.840 に答える
1

ドロップダウン メニュー項目のクリック イベントを次のように処理する場合:

 private void testItemToolStripMenuItem_Click(object sender, EventArgs e)
 {
    ToolStripDropDownItem item = sender as ToolStripDropDownItem;
    ToolStripDropDown menu = item.DropDown;
    ToolStripItem ownerItem = item.OwnerItem;
    ToolStrip toolStrip = item.Owner;
 }
于 2010-02-12T22:28:18.230 に答える
0

item.Owner の代わりに item.Parent を試してください。

于 2010-02-12T21:57:21.303 に答える