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