0

私は Form1 と Form2 を持っています

Form1 無効になっているボタンがありますが、Form1 のメニューストリップをクリックすると 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");
    }
}
4

3 に答える 3

0

ShowDialog を使用して 2 番目のフォームを開き、ShowDialog 関数によって返された DialogResult を使用して、2 番目のフォームを閉じるときに最初のフォームのボタンを有効にします。

于 2012-07-31T11:37:03.717 に答える
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 : ボタンのアクセス修飾子は公開する必要があります。

于 2012-07-31T11:39:52.790 に答える
0

Form1 の新しいインスタンスを作成しています。代わりに、Form2 をダイアログとして表示し、ダイアログの結果を OK に設定する必要があります。

このような

フォーム1 -

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.
}
于 2012-07-31T11:38:13.133 に答える