Перенос данных из одной формы в другую

У меня есть приложение С# с двумя формами (form1, form2). В form1 на btnTransfer_click я открываю вторую форму.

private void btnTransfer_Click(object sender, EventArgs e)
{
    Form2 frmConn = new Form2 ;
    frmConn .Show();

    //i need here values from second form 

}

Во второй форме у меня есть 2 текстовых поля (txtUser, txtPassword) и кнопка (btnOk). На кнопке btnOk я проверяю пользователя и пароль, и если они верны, я должен вернуться к первой форме и получить эти значения при нажатии кнопки.

В форме2:

private void btnOk_Click(object sender, EventArgs e)
{
      //verify if txtUser and txtPassword are correct 
    //if are corrects i have to send back to first form
    this.Close();
}

Как я могу это сделать? Спасибо!


person user1577242    schedule 18.06.2013    source источник
comment
Ваша вторая форма имеет только 2 текстовых поля, аутентификация выполняется там, так какие данные вы хотите передать в свою первую форму?   -  person King King    schedule 18.06.2013


Ответы (2)


В классе для form2 создайте два свойства класса public, по одному для значения каждого текстового поля:

private String _username = null;
public String UserName { get { return _username; } }
private String _password = null;
public String Password { get { return _password; } }

В form2 вы можете проверить и назначить свойства:

private void btnOk_Click(Object sender, EventArgs e)
{
    //verify if txtUser and txtPassword are correct

    if (correct)
    {
        _username = txtUser.Text;
        _password = txtPassword.Text;
    }
    this.Close();
}

Затем вы можете получить их в своем form1 коде как таковом:

private void btnTransfer_Click(Object sender, EventArgs e)
{
    //This using statement will ensure that you still have an object reference when you return from form2...
    using (Form2 frmConn = new Form2())
    {
        frmConn.Show();

        String user = frmConn.UserName;
        String pass = frmConn.Password;

        if (!String.IsNullOrEmpty(user) && !String.IsNullOrEmpty(pass))
            //do something with them, they are valid!
    }
}
person DonBoitnott    schedule 18.06.2013

Обычно он использует объект передачи данных:

http://msdn.microsoft.com/en-us/library/ff649585.aspx

Или объект домена.

http://msdn.microsoft.com/en-us/magazine/dd419654.aspx

person Oscar    schedule 18.06.2013
comment
Кажется, это связано с сетью? но ОП просто хочет передавать данные в процессе (основном процессе) настольного приложения. - person King King; 18.06.2013