1

我发现在试图找到一个项目的拥有工具条时,这并不像只查看项目的所有者那么容易。下面是一些我认为应该可以工作的伪代码。任何人都可以看到这有任何问题,或者它应该在所有情况下都有效吗?

(1) Item.Owner 的类型是 ToolStrip 吗?

(2) 是的,退货。所有者

(3) 不,Item = Item.OwnerItem。转到 (1)。

预计到达时间:

我想让测试成为一般测试。因此,我应该测试 ToolStrip、MenuStrip、StatusStrip 或 ContextMenuStrip,而不是测试 ToolStrip。

是什么使上述 4 与其他 ToolStrip 派生控件(例如 ToolStripDropDown、ToolStripDropDownMenu 和 ToolStripOverflow)不同?

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.Parent 而不是 item.Owner。

于 2010-02-12T21:57:21.303 回答