0

2つのフォームがあります。要求されたデータを取得してForm1でデータベースに接続し、Form2に送信し、Form2を表示して、データベースに接続した後、Form2のコンストラクターにdatagridviewを入力します。ここでは、sdr(SqlDataReader)に行があるかどうかを確認します。そうでない場合は、Form2のロードを停止して、Form1に戻ります。

this.close()を試しましたが、Form2のコンストラクターを実行している間は機能しません。

if (!sdr.HasRows)
   {
      MessageBox.Show("No Data!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
      this.Close();
   }

何か案は ?

4

2 に答える 2

2

データのクローズと一般的なロードは、の内部ctorではなく、 Form.LoadイベントのForm内部で行う必要があります。

例えば:

//Form2.cs 



 public class Form2 : Form
 {
    ..... 

    public override OnLoad(EventArgs e)
    { 
       ......
       if (!sdr.HasRows)
       {
          MessageBox.Show("No Data!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
          this.Close();
        }
    }   


  }
于 2012-08-22T12:56:09.057 に答える
1

フォームを表示する前に、単にチェックを行ってみませんか?Form1には、決定を下すために必要なデータがあります。

if(!sdr.HasRows)
  //show error
else    
  //show form2.
于 2012-08-22T12:58:12.017 に答える