C# Windows窗体数据绑定CheckedListBox

C# Windows窗体数据绑定CheckedListBox,c#,winforms,data-binding,checkedlistbox,C#,Winforms,Data Binding,Checkedlistbox,我有ASP方面的经验,但对WinForms完全陌生。我想做的是:我在Form1上有一个CheckedListBox,它链接到一个绑定源,该绑定源链接到一个SQL数据库。我有另一个表单(Form2),单击“添加”按钮时弹出,然后他们可以添加记录。我希望他们在表格2中添加记录后,表格1中的CheckedListBox也会更新。我尝试过DataSource和DisplayMember属性,但这似乎不起作用。有人能给我指出正确的方向吗 如果有人知道更好的方法,我也洗耳恭听。谢谢。您能从Form2访问Fo

我有ASP方面的经验,但对WinForms完全陌生。我想做的是:我在Form1上有一个CheckedListBox,它链接到一个绑定源,该绑定源链接到一个SQL数据库。我有另一个表单(Form2),单击“添加”按钮时弹出,然后他们可以添加记录。我希望他们在表格2中添加记录后,表格1中的CheckedListBox也会更新。我尝试过DataSource和DisplayMember属性,但这似乎不起作用。有人能给我指出正确的方向吗


如果有人知道更好的方法,我也洗耳恭听。谢谢。

您能从Form2访问Form1吗?如果可以的话,最简单的方法就是按下一个选中复选框的行输入按钮

类似于
form1.checkboxName.Checked=true

如果您展示一些代码,将会有所帮助:)

请看一看


我指示此人使用第一个表单中的参数调用第二个表单。。。然后第二种形式可以直接利用它。您可以通过传递第一个表单本身来实现这一点,并让它做几乎任何事情。。。但在最简单的形式中,允许您保留该形式。然后,在第二个表单的click/add/save/which中,引用第一个表单并直接(或通过公共属性getter/setter间接)设置它。

我找到了问题的答案。我在form1上处理所有事情。我创建了一个名为refreshData的方法,当我单击图标弹出form2时,我等待form2的对话框结果正常,然后调用refreshData方法。希望这对其他人有帮助:

private void pictureBox1_Click(object sender, EventArgs e)
    {
        form2 box = new form2();
        using (box)
        {
            box.ShowDialog();
            if (box.DialogResult == DialogResult.OK)
            {
                refreshData();
            }
            box.Dispose();
        }
    }
    private void refreshData()
{
ADODB.Recordset rs = new ADODB.Recordset();
           ADODB.Connection adoCon = new ADODB.Connection();
           adoCon.Open("put Connection String Here");
           rs.Open("Put Select query Here",adoCon,ADODB.CursorTypeEnum.adOpenStatic,ADODB.LockTypeEnum.adLockOptimistic);
           DataSet myDS = new DataSet();
           OleDbDataAdapter da = new OleDbDataAdapter();
           da.Fill(myDS, rs,"MyTable");
           chkList1.DataSource = null;
           chkList1.DataSource = myDS.Tables[0];
           chkList1.DisplayMember = "Put Field to Display in CheckList here";
}

我不想检查它,我只想让它显示在列表中,这样用户就可以检查所有他们想要的。一些代码:在表单1上-chkList1.DataSource=bindingSource1;chkList1.DisplayMember=“CategoryName”;在表单2上-(在使用OleDB的Add click事件上)cmd=new OleDbCommand();cmd.Connection=con;cmd.CommandText=“插入命令”;con.Open();cmd.ExecuteNonQuery();con.Close();cmd.Dispose();这个。关闭();我必须通过Form1上的BindingSource而不是直接添加到DB吗?从外部访问另一个表单的控件是非常糟糕的做法。如果确实需要类似的东西,那么应该在宿主窗体的公共属性get方法中访问该控件。