我试图通过设计表单来创建自己的自定义输入对话框。我如何初始化它,以便一旦我按下OK,我就可以收到文本框的值,回到我最初称之为的地方?
答案 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();
}
}