我有Form1和Form2
Form1我有一个禁用的按钮,但如果我点击Form1上的menustrip,我会转到Form2。在Form2上,我登录到数据库。我成功登录后,我希望Form2关闭,我希望启用Form1上的按钮。
这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
SqlConnection connection = new SqlConnection(@"...");
SqlCommand command = new SqlCommand("SELECT * FROM UserT WHERE UserName ='" +
textBox1.Text + "' AND password ='" +
textBox2.Text + "'",
connection);
connection.Open();
SqlDataReader reader = null;
reader = command.ExecuteReader();
if (reader.Read())
{
MessageBox.Show("Welcome " + reader["UserName"].ToString());
Form1 lfm = new Form1();
lfm.button1.Enabled = true;
Form2 fm = new Form2();
fm.Close();
}
else
{
MessageBox.Show("Username and password " +
textBox1.Text + "does not exist");
}
}
答案 0 :(得分:0)
使用ShowDialog打开第二个表单,然后使用ShowDialog函数返回的DialogResult在关闭第二个表单时启用第一个表单中的Button
答案 1 :(得分:0)
您正在创建Form1的新实例。不要这样做,而是需要将Form2显示为对话框并将对话框结果设置为OK。
喜欢这个
Form1 -
Button1_Click()
{
Form2 frm2 = new Form2();
if(frm2.ShowDialog() == DialogResult.OK)
{
button1.Enabled = true;
}
}
或
button1.Enabled = form2.ShowDialog() == DialogResult.OK;
在Form2中,成功登录后将DialogResult设置为OK。
if(reader.Read())
{
DialogResult = DialogResult.OK;
Close(); //It may not required.
}
答案 2 :(得分:0)
您不应该创建Form1和Form2的另一个实例。相反,你应该有一个Form1的公共属性,所以你可以启用你的按钮。如下面的代码所示:
//Form 2
public Form1 MyMainForm {get; set;}
private void button1_Click(object sender, EventArgs e)
{
//Your code ...
if (reader.Read())
{
MessageBox.Show("Welcome " + reader["UserName"].ToString());
MyMainForm.button1.Enabled = true;
//If you are already id Form2
this.Close();
}
else
{
MessageBox.Show("Username and password " +
textBox1.Text + "does not exist");
}
}
从Form1调用Form2时设置此MyMainForm。像这样:
Form2 f = new Form2() {MyMainForm = this};
PS:你按钮的访问修饰符应公开。