我发现,在尝试查找某个项目的所属工具条时,这并不像仅查看该项目的所有者那么容易。下面是一些我认为应该有效的伪代码。任何人都可以看到这有什么问题吗?或者它应该在所有情况下都有效吗?
(1)Item.Owner的类型是ToolStrip吗?
(2) 是的,归还 Item.Owner
(3) 否,Item = Item.OwnerItem。转到(1)。
预计到达时间:
我想让测试成为一般测试。因此,我应该测试 ToolStrip、MenuStrip、StatusStrip 或 ContextMenuStrip,而不是测试 ToolStrip。
上面提到的 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;
关于c# - 在.net、winforms中获取toolstrip项的所有者toolstrip的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2255351/