【问题标题】:SQLite C# and DataGridViewSQLite C# 和 DataGridView
【发布时间】:2011-04-27 18:50:34
【问题描述】:

如果我从另一个表单调用函数时尝试用数据填充 datagridview,我会遇到问题。如果我在 datagridview 所在的 form2 中调用私有 void button1_Click 中的函数,但如果我从另一个表单 (Form1) 调用函数,则一切正常,datagridview 为空。

Form2 中的代码在哪里是 datagridview

        public void fill_grid() {
        MessageBox.Show("Yuhuuuuuuu");
        form_Listusers form = new form_Listusers();
        SQLiteConnection cn = new SQLiteConnection(Form1.dbQuery); 
        cn.Open();
        string SQL;
        SQL = "SELECT users_id, name, username, place FROM users";
        SQLiteCommand cmd = new SQLiteCommand(SQL, cn);
        SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
        DataSet ds = new DataSet();
        try
        {
            da.Fill(ds);
            DataTable dt = ds.Tables[0];
            this.grid_userlist.DataSource = dt;

        }
        catch (Exception ex)
        {
            MessageBox.Show("Errrrrrrror");
        }
        cn.Close();

    }

Form1 中的代码:

       Form2 frm = new Form2();
       frm.fill_grid();

我收到消息“Yuhuuuuuuuu”,但 datagridview 为空。

#

已解决

#

在主窗体(Form1)中我设置实例

Form frm_Listusers = new form_Listusers(); 

但在此之后:

form_Listusers frm_Listusers = new form_Listusers();

我可以访问我的函数 frm.fill_grid();

【问题讨论】:

    标签: c# sqlite datagridview


    【解决方案1】:

    当你运行以下代码时:

    Form2 frm = new Form2();
    frm.fill_grid();
    

    您只是创建了 Form2 的一个实例,但显示的 Form 是 Form1。 然后发生的情况是您看到 Form1 的 DataGridView 没有填写它,因为您是在 Form2 中制作的。

    如果要在Form1的基础上添加Form2的显示,最后只添加下面一行:

    frm.Show();
    

    有几种显示 Form2 的方法,具体取决于您想要的选项(仅显示 Form2、显示两者等)。

    关于你看到的消息,是因为这行: MessageBox.Show ("Yuhuuuuuuu"); 此事件为所有应用程序触发,不依赖于现在显示的表单。

    【讨论】:

    • Form2 是 Form1 的 MDI 子级。我的函数 fill_grid() 在 form2 中声明(原始代码中的 form_userlist)。我想如果我单击 Form1(父表单)上的按钮以在 Form2 中运行 fill_grid 函数(子 - 此表单在那个时刻隐藏)。 Fill_grid() 需要用我的数据库中的数据填充 DataGridView,然后显示 Form2。如果我在 button_click 函数上从 Form2 调用 fill_grid() 一切正常,我在 DataGridView 中得到结果
    【解决方案2】:

    更改此 `this.grid_userlist.DataSource = dt;到 grid_userlist.DataSource = dt; 并从另一个表单中的第二个表单类创建实例,然后调用 form2 的方法,例如

     form2 frm2 = new fomr2;
     frm2.fill_grid()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多