下面是完整攻略:
需求概述
我们需要实现以下两个需求:
- 在一个WinForm窗体中添加一个子窗体,并在子窗体中点击按钮刷新父窗体。
- 在子窗体中修改某个控件的值,使得父窗体中相应的控件的值也随之改变。
实现方法
刷新父窗体
为了方便演示,我们在父窗体中添加一个文本框和一个按钮,点击按钮会打开一个子窗体,子窗体中有一个按钮,用于刷新父窗体中的文本框。
- 在父窗体中添加一个文本框和一个按钮,将按钮点击事件绑定以下方法:
private void button1_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm(this);
childForm.Show();
}
此时需要在项目中添加一个子窗体(即ChildForm)。
- 在子窗体的构造方法中保存父窗体的引用:
public partial class ChildForm : Form
{
private MainForm _mainForm;
public ChildForm(MainForm mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
}
- 在子窗体的按钮点击事件中,通过父窗体的引用修改父窗体中文本框的值:
private void button1_Click(object sender, EventArgs e)
{
_mainForm.textBox1.Text = "Hello, Parent Form!";
}
修改父窗体控件值
为了方便演示,我们在父窗体中添加一个文本框和一个按钮,点击按钮会打开一个子窗体,子窗体中有一个文本框,用于修改父窗体中的文本框的值。
- 在父窗体中添加一个文本框和一个按钮,将按钮点击事件绑定以下方法:
private void button1_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm(this);
childForm.ShowDialog();
}
- 在子窗体中添加一个文本框和一个按钮,将按钮的点击事件绑定以下方法:
private void button1_Click(object sender, EventArgs e)
{
_mainForm.textBox1.Text = textBox1.Text;
}
- 在子窗体的构造方法中保存父窗体的引用:
public partial class ChildForm : Form
{
private MainForm _mainForm;
public ChildForm(MainForm mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
}
示例演示
我们尝试按照上述方法实现一个简单的应用来演示。在父窗体中添加一个文本框(Name)和一个按钮(Open Child Form),点击按钮会打开一个子窗体,子窗体中有一个文本框(New Name)和两个按钮(Change Name和Refresh Parent Form)。
刷新父窗体
在父窗体中添加以下代码:
private void button1_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm(this);
childForm.Show();
}
public string NameText
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
在子窗体中添加以下代码:
public partial class ChildForm : Form
{
private MainForm _mainForm;
public ChildForm(MainForm mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
private void button1_Click(object sender, EventArgs e)
{
_mainForm.NameText = "Hello, Parent Form!";
}
}
在子窗体中点击“Refresh Parent Form”按钮,即可看到父窗体的文本框显示了新的内容。
修改父窗体控件值
在父窗体中添加以下代码:
private void button1_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm(this);
childForm.ShowDialog();
}
public string NameText
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
在子窗体中添加以下代码:
public partial class ChildForm : Form
{
private MainForm _mainForm;
public ChildForm(MainForm mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
private void button1_Click(object sender, EventArgs e)
{
_mainForm.NameText = textBox1.Text;
}
}
在子窗体中修改文本框的值,点击“Change Name”按钮,即可看到父窗体的文本框显示了新的内容。
以上就是关于“C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法 - Python技术站