2010-10-02 140 views
0

我是填充datagridview当它打开第二个窗体时,显示的值不会未填充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; 

} 

//在窗口2

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

} 

,我写的代码是为闪屏

我想要表单加载,然后显示form2

你有什么建议吗?

我想要做这个form1。

+0

代码在那里,但事件未在您的代码中分配。这些事件是否在您的GUI中连接起来? – jp2code 2011-09-07 18:41:37

回答

0

Form2已处理。然后你运行一个新的Form2。

using (var form2 = new frmMain()) 
{ 
    form2.RaiseLoadEvent(EventArgs.Empty); 

} 

...创建并填充DataGrivView,但using()会处理frmMain对象。

然后调用...

Application.Run(new frmMain()); 

它创建了一个全新的frmMain()。

如果您的目标是在显示启动画面时填充网格,则需要分开开发它们。启动画面会显示一段时间,因此请使用计时器显示然后处理启动画面。与此同时,启动主窗体,并在网格填充之前保持其不可见状态。