Запрос ввода из нового окна

196
15 июня 2018, 02:30

Как в Windows Forms организовать ввод данных из нового окна? При этом, нужно, чтобы введенные данные после нажатия кнопки, допустим "ОК", выводились в label Form1

Никак не пойму, окно просто закрывается, не передавая при этом данных...

Answer 1

Допустим у нас есть форма. На ней поле ввода и кнопка. При нажатии кнопки устанавливается результат формы и закрывается форма.

public class Form2 : Form
{
    TextBox tb;
    public Form2()
    {
        this.Width = 300;
        this.Height = 200;
        tb = new TextBox();
        this.Controls.Add(tb);
        var bt = new Button() {Text = "OK", Left = 100};
        this.Controls.Add(bt);
        bt.Click += (sender, args) => {
            this.DialogResult = DialogResult.OK;
            this.Close();
        };
    }
    public string GetText()=>tb.Text;
}

Теперь как эту форму можно использовать

public class Form1 : Form
{
    Label label;
    public Form1()
    {
        this.Width = 300;
        this.Height = 200;
        label = new Label() { Text = "Label text" };
        this.Controls.Add(label);
        var button = new Button() { Text = "press me", Top = 30 };
        this.Controls.Add(button);
        button.Click += Click;
    }
    private void Click(object sender, EventArgs e)
    {
        var f2 = new Form2();
        var ret = f2.ShowDialog();
        if (ret == DialogResult.OK)
        {
            label.Text = f2.GetText();
        }
    }
}

Результат:

Answer 2

Просто замените textbox на label:

В классе Form2 определяем свойство (или метод)
public string Data
{
    get
    {
        return textBox1.Text;
    }
}
В любом месте Form1

Form2 f = new Form2();
f.ShowDialog();
this.textBox1.Text = f.Data;
+ Противоречит не всем основам ООП
- Минусы те же

Источник: http://www.cyberforum.ru/windows-forms/thread110436.html#a_Q2

READ ALSO
Хранение бд в папке с программой

Хранение бд в папке с программой

Появилась необходимость переносной проги, без использования Managment StudioВроде как создал локальную бд с типом

186
Построение сети Петри

Построение сети Петри

Есть проблема с графическим отображением сети ПетриЕсть ли какая-нибудь открытая библиотека, которая может решить данную проблему(интересует...

208
Вложеный запрос mysql

Вложеный запрос mysql

Подскажите как сделать вложеный запрос, так что бы после обновления

178
Yii2 обновление базы данных

Yii2 обновление базы данных

Обновил базу данных на сервере таким образом, удалил старую и сделал импорт новой из локального сервераТеперь при входе в backend, после ввода...

314