使用窗口中的按钮从列表框中删除所选项目

时间:2018-05-27 13:05:23

标签: c# sql

我有一个列表框,我想在其中选择和项目,然后按一个按钮从数据库中删除它。我可以编辑并保存好,只是不删除。

当前代码:

private void button1_Click_3(object sender, EventArgs e)
{
     if (listBox1.Items.Count >= 1)
          {
               if (listBox1.SelectedValue != null)
               {
                    listBox1.Items.Remove(listBox1.SelectedItem);
                    System.Windows.Forms.MessageBox.Show("Item Deleted");
               }
          }
     else
     {
          System.Windows.Forms.MessageBox.Show("No ITEMS Found");
     }
}

我收到错误:

  

设置DataSource属性时无法修改项集合。

2 个答案:

答案 0 :(得分:2)

File "C:/msys32_out2/mingw32/lib/python2.7/site-packages/serial/serialwin32.py", line 62, in open
    raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port '/??/COM12': WindowsError(123, 'The filename, directory name, or volume label syntax is incorrect.')
make: *** [/c/msys32/home/tuant/esp/esp-idf/components/esptool_py/Makefile.projbuild:55: flash] Error 1

这将有效

答案 1 :(得分:0)

假设ListBox上可以选择多个项目。以下逻辑将从UI中删除。此外,如果需要,您可以添加逻辑以从数据库中删除项目。

当数据绑定与数据源不同时,会发生以下异常。

  

当DataSource属性为时,无法修改项集合   设置

数据源指定数据源,而数据绑定定义数据在检索后如何绑定。通常,数据绑定仅在UI初始化期间发生,并且在此之后不会发生变化 数据源本身可以在控制生命周期内发生变化,但这种情况很少见。

此处,数据源元素会发生变化。

关于你的实际错误。您无法设置DataSource并修改Items属性。这是不允许的。处理此问题的正确方法是将项目添加到数据源。在数据源中插入此选项将使控件自动更新列表。 ListBox控件依赖于DS来存储数据,因此所有更改都必须经过。在极少数情况下,您需要能够直接编辑项目,您必须取消DataSource并手动填充Items集合。但是,通常不需要对DataSource进行此更新。

下面的代码重置数据源

if(listBox1.SelectedItems != null)
{
    // Assuming its List of string
    var items = listBox1.DataSource as List<string>;  

    // Remove multiple selected items
    var count = listBox1.SelectedItems.Count;    
    while(count != 0)
    {
        var selectedItem = listBox1.SelectedItems[count-1];
        if(items.ContainsKey(selectedItem))
        {
            items.Remove(selectedItem);
        }
        count--;
    }
    listBox1.DataSource = null;
    listBox1.Items.Clear();
    listBox1.DataSource = items;
}

存储数据源并对其进行修改以直接更新数据源的优化方法。使用ObservableCollection类型并更新集合以更新UI。

public class NamesClass : DependencyObject
{
   public ObservableCollection<string> Names {get; private set; }
   public TestClass()
   {
            this.Names = new ObservableCollection<string>();
   }
}

现在将DependencyObject类包含为DataSource并更新Names集合。