如何在C#表单应用程序中停止在构造函数中加载表单

如何在C#表单应用程序中停止在构造函数中加载表单,c#,C#,我有两张表格。我在Form1中获取连接到数据库的请求数据,将其发送到Form2,显示Form2,并在连接到数据库后在Form2的构造函数中填充datagridview。这里我检查sdr(SqlDataReader)中是否有任何行。如果没有,我想做的是停止加载Form2并返回Form1 我尝试了this.close(),但在执行Form2的构造函数时它不起作用 if (!sdr.HasRows) { MessageBox.Show("No Data!", "Warning", M

我有两张表格。我在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();
   }

有什么想法吗?

数据的关闭和一般加载不必在
表单的
ctor
内完成,而是在事件内完成

例如:

//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();
        }
    }   


  }

数据的关闭和一般加载不必在
表单
ctor
内完成,而是在事件内完成

例如:

//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();
        }
    }   


  }

为什么不在出示表格之前检查一下呢?表格1提供了做出决策所需的数据

if(!sdr.HasRows)
  //show error
else    
  //show form2.

为什么不在出示表格之前检查一下呢?表格1提供了做出决策所需的数据

if(!sdr.HasRows)
  //show error
else    
  //show form2.

你们能在创建form2之前检查你们的数据吗?是的,我得到了连接到数据库的请求数据,并检查sdr(SqlDataReader)是否有行。我不想在form1中连接到数据库。所以我可以检查,但我不想。我很想知道为什么“构造函数需要停止”如此重要-你能详细说明一下吗?你能在创建form2之前检查你的数据吗?是的,我得到请求的数据来连接到数据库,并检查sdr(SqlDataReader)是否有行。我不想连接到Frime1中的数据库,所以我可以检查,但是我不想知道。我很好奇为什么它如此重要以至于“构造函数需要停止”——你能详细阐述一下吗?是的,我有数据,我连接到Frime2中的数据库,我不想在Frime1中这样做。然后你可以考虑编辑你的问题。正如你所说:*我有两张表格。我在Frime1中得到请求的数据*是的,我有数据,我连接到Frime2中的数据库,我不想在Frime1中这样做,然后你可以考虑编辑你的问题。正如你所说:*我有两张表格。我在Form1*中获得了请求的数据,因此无法在构造函数中停止?@MustafaTok:没有停止构造函数的意义。让他来构造对象,当它被构造时,关闭
OnLoad
窗口。或者,如果您不想在网格为空时构造对象,只需在
Form1
call中添加控件,因此如果网格为空,则根本不调用
Form2
。因此在构造函数中没有停止的方法?@MustafaTok:没有停止构造函数的意义。让他来构造对象,当它被构造时,关闭
OnLoad
窗口。或者,如果您不想在网格为空时构造对象,只需在
Form1
call中添加控件,因此如果网格为空,则根本不要调用
Form2