【问题标题】:Windows Forms DataBinding CheckedListBoxWindows 窗体数据绑定 CheckedListBox
【发布时间】:2011-06-16 13:52:37
【问题描述】:

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

如果有人知道更好的方法来做到这一点,我也全神贯注。谢谢。

【问题讨论】:

    标签: c# winforms data-binding checkedlistbox


    【解决方案1】:

    看看a previous answered post

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

    【讨论】:

      【解决方案2】:

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

      类似form1.checkboxName.Checked = true;

      如果您显示一些代码会有所帮助:)

      【讨论】:

      • 我不想让它检查,我只想让它显示在列表中,这样用户就可以检查他们想要的所有内容。一些代码:在表格 1 - chkList1.DataSource = bindingSource1; chkList1.DisplayMember = "类别名称";在表格 2 上 - (在使用 OleDB 的添加点击事件上)cmd = new OleDbCommand(); cmd.Connection = con; cmd.CommandText = "插入命令"; con.Open(); cmd.ExecuteNonQuery(); con.Close(); cmd.Dispose(); this.Close();我是否必须通过 Form1 上的 BindingSource 添加它而不是直接添加到数据库?
      • 从外部访问另一个表单的控件是非常糟糕的做法。如果确实需要类似的东西,则应在托管表单的公共属性 get 方法中访问该控件。
      【解决方案3】:

      我找到了问题的答案。我处理了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";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-11
        • 2017-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多