WinForms从另一个窗体引发事件
本文关键字:事件 窗体 另一个 WinForms | 更新日期: 2023-09-27 18:01:38
我有一个主表单名为:MainForm和一个子表单名为:ChildForm我想填充ChildForm的文本框,在MainForm_ButtonClick中,我想触发ChildForm_ButtonClick事件。
<标题> ChildForm:public partial class ChildForm :Form
{
public delegate void delPassData(TextEdit text);
private void button1_Click(object sender, EventArgs e)
{
string depart = "";
MainForm mfrm = new MainForm();
delPassData del = new delPassData(frm.funData);
del(this.Item_CodeTextEdit);
}
}
<标题> MainForm: public partial class MainForm : Form
{
public void funData(TextEdit txtForm1)
{
string ss = "";
ss = txtForm1.Text;
MessageBox.Show(ss);
}
private void NavigationPanelBtns_ButtonClick(object sender, ButtonEventArgs e)
{
switch (e.Button.Properties.Caption)
{
case "Save":
// i want to call funData() here but i get an empty messageBox
break;
}
}
}
标题>标题>子表单
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
MainForm.OnChildTextChanged += MainForm_OnChildTextChanged;
MainForm.OnButtonClick += MainForm_OnButtonClick;
bttn1.Visible = false;
}
void MainForm_OnButtonClick(object sender, EventArgs e)
{
this.bttn1.PerformClick();
}
void MainForm_OnChildTextChanged(string value)
{
this.textBox1.Text = value;
}
private void bttn1_Click(object sender, EventArgs e)
{
MessageBox.Show("I am hide. But shows message");
}
}
public class Bttn : Button
{
public new void PerformClick()
{
this.OnClick(EventArgs.Empty);
}
}
创建父窗体
public partial class MainForm : Form
{
public delegate void OnMyTextChanged(string value);
public delegate void ButtonClicked(object sender, EventArgs e);
public static event OnMyTextChanged OnChildTextChanged;
public static event ButtonClicked OnButtonClick;
ChildForm frm = new ChildForm();
public MainForm()
{
InitializeComponent();
frm.Show();
}
public void button1_Click(object sender, EventArgs e)
{
OnChildTextChanged("this is new value");
OnButtonClick(sender, e);
}
}
访问另一种形式的文本框:
-
将文本框的
Modifier
属性设置为子形式的public
-
在主窗体中,通过子窗体的对象访问文本框。
,
obj.txtBox.Text="MyValue";
以另一种形式访问事件:
-
设置事件处理功能为
public
-
通过传递
null
作为表单对象的参数来调用该函数。,
obj.MyButton_Click(null, null);