c# - 在.net、winforms中获取toolstrip项的所有者toolstrip的正确方法

标签 c# .net winforms toolstrip

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

(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/

相关文章:

c# - 保存WPF ViewModel当前状态

c# - 如何使用反射调试从 app.config 加载的对象?

c# - App.config 中的 .NET SupportedRuntime

c# - 在 C# 中“禁用”TextBox 的 MaxLength 属性

c# - 遍历 Datagridview 列标题

vb.net - VB.NET 中的 Windows 窗体控件何时何地调用 InitializeComponent?

c# - 两个字符串之间的所有公共(public)子字符串

c# - 异步 LINQ - 不懒惰?多线程?

c# - Web 应用程序 - 仪表板类型 GUI - 界面

c# - 对于一个用户,从xml字符串导入DSA key 失败。权限?安装损坏? KSP错误?