初始化另一个窗体后返回该窗体的文本框值

本文关键字:窗体 文本 返回 另一个 初始化 | 更新日期: 2023-09-27 18:13:19

我试图通过设计表单来制作自己的自定义输入对话框。我该如何初始化它,以便一旦我按下OK,我就可以接收其中的文本框的值,回到我最初调用它的地方?

初始化另一个窗体后返回该窗体的文本框值

您可以创建一个公开如下属性的表单:

public class InputDialog:Form
{
    public string Result { get; set; }
    private void OK_Click(object sender, EventArgs e)
    {
        Result = txtResult.Text;
        this.Close();
    }
}

基本格式:

var dialog = new InputDialog();
dialog.ShowDialog();
string Result = dialog.Result;

您可以使用events进行表单之间的通信。这样,InputForm就隐藏了逻辑,隐藏了外部世界的属性。

public class InputEventArgs : EventArgs
{
    public string Input { get; private set; }
    public InputEventArgs(string input)
    {
        Input = input;
    }
}
public class InputDialog : Form
{
    public EventHandler<InputEventArgs> InputSet;
    private void OkClick(object sender, EventArgs e)
    {
        var ev = InputSet;
        if (ev != null)
        {
            ev(this, new InputEventArgs(txtInput.Text));
        }
    }
}

和在你的呼叫形式:

private void ShowInputForm()
{
    using (var frm = new InputDialog())
    {
       frm.InputSet += (s, e) =>
       {
          txtResult.Text = e.Input;
       }
       frm.ShowDialog();
    }
}