初始化后返回另一个表单的文本框值?

时间:2016-10-17 10:26:08

标签: c# input

我试图通过设计表单来创建自己的自定义输入对话框。我如何初始化它,以便一旦我按下OK,我就可以收到文本框的值,回到我最初称之为的地方?

2 个答案:

答案 0 :(得分:1)

您可以创建一个公开这样的属性的表单:

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;

答案 1 :(得分:1)

您可以使用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();
    }
}