我是一个填充datagridview当它打开第二个表单时,显示的值不会
为什么?
我的代码:
// in form1
private bool Method1()
{
using (var form2 = new frmMain())
{
form2.RaiseLoadEvent(EventArgs.Empty);
}
return (true);
}
private void frm1_Load(object sender, EventArgs e)
{
Method1();
this.DialogResult = DialogResult.Cancel;
}
//在form2中
public void RaiseLoadEvent(EventArgs e)
{
this.OnLoad(e);
}
private void OnLoad(EventArgs e)
{
this.con = new OleDbConnection(this.ConnectionString());
string strquery = "select * from english";
this.dba = new OleDbDataAdapter(strquery, con);
this.dba.Fill(this.ds);
this.dataGridView1.DataSource = this.ds.Tables[0].DefaultView;
}
Program.cs中的代码:
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
frm1 frmsp = new frm1();
if (frmsp.ShowDialog() == DialogResult.Cancel)
{
Application.Run(new frmMain());
}
}
我写的代码是SplashScreen
我希望加载表单,然后显示form2
你有什么建议?
我想这样做1。
答案 0 :(得分:0)
表格2被处理掉。然后使用新的Form2运行。
using (var form2 = new frmMain())
{
form2.RaiseLoadEvent(EventArgs.Empty);
}
...创建并填充DataGrivView,但using()将处理frmMain对象。
然后你打电话......
Application.Run(new frmMain());
创建一个全新的frmMain()。
如果您的目标是在显示启动画面时填充网格,则需要分开开发它们。启动画面会显示一段时间,因此请使用计时器显示然后处理启动画面。在此期间,启动主窗体并使其保持不可见,直到填充网格。