C# 单击“确定”按钮后,如何关闭当前窗体并将字符串传递给预制件
在表单1中,点击“添加”按钮后会弹出表单2 我想要的是,它将传递输入字符串,刷新表单1中的列表框,并在单击“确定”按钮后关闭表单2。但似乎有点不对劲C# 单击“确定”按钮后,如何关闭当前窗体并将字符串传递给预制件,c#,winforms,C#,Winforms,在表单1中,点击“添加”按钮后会弹出表单2 我想要的是,它将传递输入字符串,刷新表单1中的列表框,并在单击“确定”按钮后关闭表单2。但似乎有点不对劲 private void btnOK_Click(object sender, EventArgs e) { MainForm mainForm = new MainForm(); mainForm.AddMessageInfo = textBoxAddWinForm.Text; mainFo
private void btnOK_Click(object sender, EventArgs e)
{
MainForm mainForm = new MainForm();
mainForm.AddMessageInfo = textBoxAddWinForm.Text;
mainForm.Close();
}
您需要让Form1知道用户按下了
OK
按钮
表格1:
private void btAdd_Click(object sender, EventArgs e)
{
AddWinForm addWinForm = new AddWinForm();
DialogResult dr = addWinForm.ShowDialog();
if(dr == DialogResult.OK)
{
string info = addWinForm.AddMessageInfo;
// do something
}
}
表格2:
public string AddMessageInfo { get; private set; }
private void btnOK_Click(object sender, EventArgs e)
{
AddMessageInfo = textBoxAddWinForm.Text; // Set AddMessageInfo
this.DialogResult = DialogResult.OK; // Let parent form know you pressed OK
this.Close(); // Close this form
}
这不是一种优雅的方式,但它完成了任务。 另一种方法是,您可以使用代理将信息从一个表单传递到另一个表单
Public class addWinForm : Form
{
...
public string Answer { get { return answer;}}
private string answer;
private void btnOK_Click(object sender, EventArgs e)
{
//this is supposed
answer = "1111";
Close();
}
}
public class MainForm : Form
{
....
private AddWinForm addWinForm = null;
private void btAdd_Click(object sender, EventArgs e)
{
addWinForm = new AddWinForm();
addWinForm.ShowDialog();
string answerAfterButtonOk = addWinForm.Answer;
addWinForm.Dispose();
addWinForm = null;
}
}
Public class addWinForm : Form
{
...
public string Answer { get { return answer;}}
private string answer;
private void btnOK_Click(object sender, EventArgs e)
{
//this is supposed
answer = "1111";
Close();
}
}
public class MainForm : Form
{
....
private AddWinForm addWinForm = null;
private void btAdd_Click(object sender, EventArgs e)
{
addWinForm = new AddWinForm();
addWinForm.ShowDialog();
string answerAfterButtonOk = addWinForm.Answer;
addWinForm.Dispose();
addWinForm = null;
}
}