Windows窗体DataBinding CheckedListBox

时间:2011-06-16 13:52:37

标签: c# winforms data-binding checkedlistbox

我有使用ASP的经验,但对WinForms来说却是全新的。我想要做的是:我在Form1上有一个CheckedListBox,它链接到一个链接到SQL数据库的绑定源。我有另一个表单(Form2),点击“添加”按钮弹出,然后他们可以添加一个记录。我想要发生的是,只要他们在表单2中添加记录,Form1中的CheckedListBox也会更新。我已经尝试过DataSource和DisplayMember属性,但这似乎没有办法。有人能指出我正确的方向吗?

如果有人知道更好的方法,我也都是耳朵。感谢。

3 个答案:

答案 0 :(得分:0)

您可以从Form2访问Form1吗?如果您可以最简单的方法是在按下的按钮上添加一行来检查复选框

类似于form1.checkboxName.Checked = true;

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

答案 1 :(得分:0)

看看a previous answered post

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

答案 2 :(得分:0)

我找到了问题的答案。我在form1上处理了一切。我创建了一个名为refreshData的方法,当我单击我的图标弹出form2时,我等待form2的Dialog Result为OK,然后我调用了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";
}