我有ContextMenuStrip
一个DataGridView
。在意识到调用cm.FindForm()
结果为 null 后,我将上下文菜单添加到网格的ContextMenuStrip
属性中,但这并没有帮助。
我是否缺少其他一些设置以便上下文菜单FindForm()
返回表单?
注意:我通过 Visual Studio 设计器添加了上下文菜单,方法是将其拖动到表单中。主菜单 (a MenuStrip
) 也没有显示此行为,它FindForm()
会正确返回表单。
编辑:对于汉斯(为什么我以我的方式做事)
我曾经将所有代码都放在一个很长的 Form1.cs 中,但这显然很难维护。我发现将所有代码分离到一个框架中,该框架对于每个组件都是一个单独的类,然后通过注入根据需要引用其他类更容易维护和遵循。
对于那些不是控件的组件,我将组件所属的表单传递给构造函数,但是对于那些是控件的组件,我发现该FindForm()
方法是一种快捷方式。框架的基类使用FindForm()
. 因此,每个组件都可以通过 Form 属性访问表单。
现在我发现上下文菜单控件没有得到它的父控件集,因此FindForm()
无法正常工作。