C# 两种形式的组件之间的相互作用

C# 两种形式的组件之间的相互作用,c#,winforms,C#,Winforms,首先,我禁用Toolstrip菜单项,以便当用户单击“启用”按钮时,Toolstrip菜单项可以启用,如: private System.Windows.Forms.ToolStripMenuItem QLKHTSM; 在表单上禁用QLKHTSM 问题是Enable按钮在另一个窗体上,所以我尝试通过此代码在两个窗体之间进行交互(在ToolStripMenuItem的相同窗体下) 但是问题在于静态,QLKHTSM不可用,没有静态,我不能用其他形式调用它。 请帮忙。谢谢。以QLKTHSM的形式,转

首先,我禁用Toolstrip菜单项,以便当用户单击“启用”按钮时,Toolstrip菜单项可以启用,如:

private System.Windows.Forms.ToolStripMenuItem QLKHTSM;
在表单上禁用QLKHTSM

问题是Enable按钮在另一个窗体上,所以我尝试通过此代码在两个窗体之间进行交互(在ToolStripMenuItem的相同窗体下)

但是问题在于静态,QLKHTSM不可用,没有静态,我不能用其他形式调用它。
请帮忙。谢谢。

QLKTHSM
的形式,转到
QLKTHSM
的属性,并将修饰符属性更改为
Public
。然后转到第二个表单并使用

public void enabletoolstrip()
{
    FirstForm f1 = (FirstForm)Application.OpenForms["FirstForm"];
    f1.QLKHTSM.Enabled = true;
}
如果尚未显示带有
QLKHTSM
的表单,则可以创建全局对象

FirstForm f1 = new FirstForm();
然后在启用工具条中

public void enabletoolstrip()
{
    f1.QLKHTSM.Enabled = true;
}
然后,无论你想在哪里显示你使用的表单

f1.Show();

能否将
ToolStripMenuItem QLKHTSM
对象传递给要启用/禁用它的表单?谢谢,它一开始不会报告任何错误。但当我尝试调试它时,它在调用该方法之前确定QLKHTSM为NULL。我试图在这里修复它,但仍然不知道。@user3032547是打开的
QLKHTSM
的表单吗?实际上,是和否。第二个表单,即“启用”按钮所在的是登录屏幕,它出现在主表单之前,QLKHTSM所在的位置。我正在使用ShowDialog(),因此它不会在选择登录方法之前出现。@user3032547用户是否会在单击按钮转到下一个表单之前单击“启用”按钮?用户可以选择“启用”或不转到下一个表单,但如果单击“启用”,则toolstrip菜单应处于启用状态。如果用户单击“取消”,下一个表单仍将显示,但toolstrip菜单将变灰。
f1.Show();