2

我有ContextMenuStrip一个DataGridView。在意识到调用cm.FindForm()结果为 null 后,我将上下文菜单添加到网格的ContextMenuStrip属性中,但这并没有帮助。

我是否缺少其他一些设置以便上下文菜单FindForm()返回表单?

注意:我通过 Visual Studio 设计器添加了上下文菜单,方法是将其拖动到表单中。主菜单 (a MenuStrip) 也没有显示此行为,它FindForm()会正确返回表单。

编辑:对于汉斯(为什么我以我的方式做事)

我曾经将所有代码都放在一个很长的 Form1.cs 中,但这显然很难维护。我发现将所有代码分离到一个框架中,该框架对于每个组件都是一个单独的类,然后通过注入根据需要引用其他类更容易维护和遵循。

对于那些不是控件的组件,我将组件所属的表单传递给构造函数,但是对于那些是控件的组件,我发现该FindForm()方法是一种快捷方式。框架的基类使用FindForm(). 因此,每个组件都可以通过 Form 属性访问表单。

现在我发现上下文菜单控件没有得到它的父控件集,因此FindForm()无法正常工作。

4

0 回答 0