phil.o
Почему вы пытаетесь передать имя пользователя и пароль обратно в form2? В идеале проверка должна быть выполнена в форме 3, которая не должна позволять закрываться, если пароль и пароль не совпадают, и должна возвращать либо то, либо другое DialogResult.OK
если имя пользователя и пароль совпадают вместе (успешный логин), или DialogResult.Cancel
если они этого не делают (неправильное имя пользователя или неправильный пароль).
Затем form2 может использовать DialogResult
экземпляра form3, чтобы узнать, был ли вход в систему успешным.
Вот краткая "архитектура", чтобы поставить вас на путь:
public class Form2 : Form
{
private void LoginButton_Click(object sender, EventArgs e)
{
using (Form3 form = new Form3())
{
if (form.ShowDialog(this) == DialogResult.OK)
{
// Sucessful login
// You can get the username back here. I don't think you need the
// password, though. Passwords are only useful in Form3's context.
string username = form.Username;
}
else
{
// Login failed
}
}
}
}
public class Form3 : Form
{
// This property will allow you to get the username, eventually.
public string Username => UsernameTextBox.Text;
// This event handler should be attached to the Validated event
// of PasswordTextBox and PasswordRepeatTextBox. It disables the OK
// button if both entries do not match. There is no point in enabling
// to login if these values do not match in the first place.
private void TextBox_Validated(object sender, EventArgs e)
{
OkButton.Enabled =
PasswordTextBox.Text == PasswordRepeatTextBox.Text;
}
// This event handler must be attached to the Click event of the OK button.
// It sets the form's DialogResult according to the validity of the
// username/passsword pair.
private void OkButton_Click(object sender, EventArgs e)
{
this.DialogResult =
(IsValidLogin(UsernameTextBox.Text, PasswordTextBox.Text))
? DialogResult.OK
: DialogResult.Cancel;
this.Close();
}
private bool IsValidLogin(string username, string password)
{
// TODO : you have to implement an actual username/password validation
// strategy.
}
}
У меня также есть ощущение, что вам следует начать с чего-то более простого, чем система входа в систему, поскольку вы, похоже, еще не поняли основ ООП. Например, вы не можете создать новый экземпляр form2 в form3 и ожидать, что получите ссылку на уже существующий экземпляр form2. Когда вы создаете новый экземпляр, он отличается от всех других экземпляров того же класса, которые могли быть созданы до сих пор.
И, как правило, советую начать с ручки и бумаги, и нарисовать краткую диаграмму важных шагов, которые должны быть выполнены; это позволит вам написать более четкий и эффективный код позже.