2016-10-17 2 views
0

Я пытаюсь создать собственный собственный диалог ввода, создав форму. Как бы я инициализировал его так, чтобы как только я нажму OK, я могу получить значение текстового поля в нем, назад к тому, откуда я его сначала назвал?Возврат значения текстового поля в другой форме после его инициализации?

ответ

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

Вы можете использовать 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(); 
    } 
} 
Смежные вопросы