我有2 winforms
名为AppNamespace.MYForm
和AnotherNamespace.AnotherForm
他们都有一个按钮。
当用户点击AnotherNamespace.AnotherForm
按钮时,我想点击AppNamespace.MYForm
上的按钮。
但是,有AnotherNamespace
无法使用AppNamespace
的瑕疵
这使我无法做到:
AppNamespace.MYForm firstForm = new AppNamespace.MYForm();
firstForm.button.PerformClick();
有什么想法吗?
答案 0 :(得分:1)
将助手类/其他命名空间中的按钮单击代码分开,然后在按钮单击中调用它。
您可以通过调用helper命名空间和方法在任何命名空间中使用该方法。
答案 1 :(得分:0)
手动执行任何控件的事件是一种不好的做法。创建单独的方法并执行它。
您可以创建界面,然后将其实现到两个表单。界面应包含方法PerformClick
。
public Interface IMyInterface
{
void PerformClick(string _module);
}
public class Form1 : IMyInterface
{
public void IMyInterface.PerformClick(string _module)
{
//CODE HERE
if (Application.OpenForms["Form2"] != null && _module != "Form2")
((IMyInterface)Application.OpenForms["Form2"]).PerformClick(_module);
}
private void button1_Click(object sender, EventArgs e)
{
this.PerformClick(this.Name);
}
}
public class Form2 : IMyInterface
{
public void IMyInterface.PerformClick()
{
//CODE HERE
if (Application.OpenForms["Form1"] != null && _module != "Form1")
((IMyInterface)Application.OpenForms["Form1"]).PerformClick(_module);
}
private void button1_Click(object sender, EventArgs e)
{
this.PerformClick(this.Name);
}
}
答案 2 :(得分:0)
通过编辑Form2.Designer.cs,在第二个表单Button
上创建public
:
public System.Windows.Forms.Button button1;
将Click
注册到第一个表格:
private void Form1_Load(object sender, EventArgs e)
{
// or whatever you do to create the 2nd form..
AnotherNamespace.Form2 F2 = new AnotherNamespace.Form2();
F2.Show();
// register the click:
F2.button1.Click += button2_Click;
}
或者以第二种形式创建Property
:
public Button myButton { get; set; }
并将其设置为Button
:
public Form2()
{
InitializeComponent();
myButton = button1;
}
现在您可以像这样注册Click
:
F2.myButton.Click += button2_Click;