C# 订阅其他表单的按钮单击
所以我有两个表单,需要将属性从一个表单传递到另一个表单 在表格1中,我有一个方法C# 订阅其他表单的按钮单击,c#,event-handling,eventargs,C#,Event Handling,Eventargs,所以我有两个表单,需要将属性从一个表单传递到另一个表单 在表格1中,我有一个方法 private void rb_CheckedChanged(object sender, EventArgs e) { var frm2= new Form2(); WorkComplete += frmSetNewTime.btnOk_Click; frmSetNewTime.Show(); } private void WorkCom
private void rb_CheckedChanged(object sender, EventArgs e)
{
var frm2= new Form2();
WorkComplete += frmSetNewTime.btnOk_Click;
frmSetNewTime.Show();
}
private void WorkComplete(object sender, EventArgs e)
{
// Property = Property from form 2
}
在表单2中,我有一个名为btnOK_Click的方法
public void btnOk_Click(object sender, EventArgs e)
{
Property = 5
}
我的目标是将该属性从form2传递回Form1
我无法订阅WorkComplete,因为它是一个方法组,这是我得到的错误。有人知道这样做的正确方法或语法吗?试试这个:
public event OnWorkCompleted;
public void WorkComplete()
{
if(OnWorkCompleted != null)
OnWorkCompleted(Property, null);
}
在认购人表格上:
Form1.OnWorkCompleted += Form1WorkCompleted;
public void Form1WorkCompleted(object sender, EventArgs e)
{
var property = (int)sender;
MessageBox.Show('hey form 1 property is ' + property.);
}
希望这能有所帮助。1)使用2个表单创建一个新项目
2) 在Form2上,创建一个按钮
3) 在按钮的属性中,将修改器更改为内部。
通常,这是私有的,这意味着只有Form2可以访问button1及其属性。将其更改为内部允许程序集中的任何类访问按钮1。如果要将其更改为Public,还可以允许项目中引用的库访问按钮1
4) 在Form1中,在类中添加以下代码:
Form2 frm;
private void Form1_Load(object sender, EventArgs e)
{
// Create and show the form.
frm = new Form2()
frm.Show();
// Assign the event handler for the button to a handler within this class.
frm.button1.Click += this.Form2_button1_Click;
}
// This is the event handler that will run when you click the button on Form2.
private void Form2_button1_Click(object sender, EventArgs e)
{
MessageBox.Show("You clicked the button on Form 2!");
var frmProperty = frm.Property;
}
我可以这样做,我试图将一个属性从form2传递到Form1。在这种情况下,您只需在类级别定义frm,并在事件处理程序中引用它。我已经更新了答案来证明这一点。