我发现,在尝试查找某项的拥有工具条时,这不仅仅是查看该项的所有者并不容易。以下是一些我认为应该起作用的伪代码。谁能看到与此有关的任何问题,或者在所有情况下都可以使用?

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

(2)是,返回Item.Owner

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

预计到达时间:

我想将考试设为一般考试。因此,除了测试ToolStrip之外,我还应该测试ToolStrip,MenuStrip,StatusStrip或ContextMenuStrip。

是什么使上面提到的4与其他ToolStrip派生的控件(例如ToolStripDropDown,ToolStripDropDownMenu和ToolStripOverflow)不同?

ETA2:忽略,绝对的鲤鱼!

据我所知,这与Control.TopLevelControl有关。上面的3个无法添加到窗体的控件将返回其自身的TopLevelControl。 4个有效控件在添加到窗体之前对TopLevelControl不返回任何内容,在添加窗体之后不返回任何窗体本身。

最佳答案

这工作:

        ToolStrip owner = testToolStripMenuItem.Owner;
        while (owner is ToolStripDropDownMenu)
            owner = (owner as ToolStripDropDownMenu).OwnerItem.Owner;

09-17 13:58