从其他表单启用按钮并关闭表单

时间:2012-07-31 11:25:57

标签: c# winforms button

我有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");
    }
}

3 个答案:

答案 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:你按钮的访问修饰符应公开。