将变量从子窗体传递到父窗体
本文关键字:窗体 变量 | 更新日期: 2023-09-27 18:27:22
我正在使用一个容器(mdi-parent)打开一个主菜单。主菜单允许用户连接到数据库并打开其他程序。我试图在容器(父窗体)上显示您连接到的数据库,但在将字符串从主菜单传递到容器时遇到问题。当用户单击连接按钮时,我需要容器有一个事件侦听器来侦听子窗体上的按钮单击。当在子窗体上单击连接按钮后,它会将变量传递给父窗体。我该怎么做?
也许您可以使用一个事件。因此,每次子窗体上的数据库名称更改时,您都可以在父窗体上得到一个回调
儿童
public partial class Child : Form
{
public event DatabaseChangeHandler DatabaseChanged;
public delegate void DatabaseChangeHandler(string newDatabaseName);
public Child()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//When the database changes
if (this.DatabaseChanged != null)
{
this.DatabaseChanged("The New Name");
}
}
}
父
public partial class Parent : Form
{
private Child childForm;
public Parent()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// Open the child form
childForm = new Child();
childForm.DatabaseChanged += childForm_DatabaseChanged;
childForm.ShowDialog();
}
void childForm_DatabaseChanged(string newDatabaseName)
{
// This will get called everytime you call "DatabaseChanged" on child
label1.Text = newDatabaseName;
}
}
只需在Form2中声明一个公共变量例如:var1,然后在从Grid中选择行时,将所选值分配给Form2公共变量var1。
然后一旦你关闭Form2。你可以访问Form1中的值,比如你在Form1中有一个文本框,它应该通过提到从Form2的网格中获得所选的值
Form2 f2=new Form2();
TextBox1.Text=f2.var1;
希望这能帮助