设置数据源属性时,无法修改 c# 项集合

本文关键字:修改 集合 数据源 属性 设置 | 更新日期: 2023-09-27 18:33:00

我正在尝试在列表框中上下移动项目,但不断收到错误,不知道如何解决。 该错误与" listBox1.Items.Remove(selected); "

有关
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace company1
{
    public partial class Form1 : Form
    {
        List<Configuration> lines = new List<Configuration>();
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            this.listBox1.Items.Clear();
            //Read in every line in the file
            using (StreamReader reader = new StreamReader("file.txt"))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    //string textfile = line;
                    string[] myarray = new string[] { "''n" };
                    string[] parts = new string[9];
                    parts = line.Split(myarray, StringSplitOptions.RemoveEmptyEntries);
                    lines.Add(new Configuration(parts[0], int.Parse(parts[1]), int.Parse(parts[2])));
                    line = reader.ReadLine();
                }
            }
            listBox1.DataSource = lines;
            listBox1.DisplayMember = "CompanyName";
        }
        private void moveup_button_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItems.Count > 0)
            {
                object selected = listBox1.SelectedItem;
                int indx = listBox1.Items.IndexOf(selected);
                int totl = listBox1.Items.Count;
                if (indx == 0)
                {
                    listBox1.Items.Remove(selected);
                    listBox1.Items.Insert(totl - 1, selected);
                    listBox1.SetSelected(totl - 1, true);
                }
                else
                {
                    listBox1.Items.Remove(selected);
                    listBox1.Items.Insert(indx - 1, selected);
                    listBox1.SetSelected(indx - 1, true);
                }
            }
        }
        private void movedown_button_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItems.Count > 0)
            {
                object selected = listBox1.SelectedItem;
                int indx = listBox1.Items.IndexOf(selected);
                int totl = listBox1.Items.Count;
                if (indx == totl - 1)
                {
                    listBox1.Items.Remove(selected);
                    listBox1.Items.Insert(0, selected);
                    listBox1.SetSelected(0, true);
                }
                else
                {
                    listBox1.Items.Remove(selected);
                    listBox1.Items.Insert(indx + 1, selected);
                    listBox1.SetSelected(indx + 1, true);
                }
            }
        }
    }
}

设置数据源属性时,无法修改 c# 项集合

使用 BindingList 对象:

  • 使用初始项作为数据创建绑定列表
  • 将列表框的数据源绑定到该绑定列表对象
  • 在绑定列表中添加和删除项
  • ,而不是在列表框中添加和删除项

http://msdn.microsoft.com/en-us/library/ms132679.aspx 的好例子

 Conn obcon = new Conn();
 SqlConnection ob = new SqlConnection(obcon.strCon);
 SqlDataAdapter da = new SqlDataAdapter();
 da.SelectCommand = new SqlCommand();
 da.SelectCommand.Connection = ob;
 SqlCommand ds = da.SelectCommand;
 ds.CommandText = "Select* from UserManagement";
 ds.CommandType = CommandType.Text;
 DataTable dt = new DataTable();
 da.Fill(dt);
 DataTable dtt = new DataTable();
 dtt.Columns.Add("FullName");
 dtt.Rows.Add();
 dtt.Rows[0]["FullName"] = "Select Name";
 for (int i = 0; i < dt.Rows.Count; i++)
 {
     dtt.Rows.Add();
     dtt.Rows[i + 1]["FullName"] = dt.Rows[i][0].ToString();
 }
 cmbFindUser.DataSource = dtt;
 cmbFindUser.DisplayMember = "FullName";
 cmbFindUser.ValueMember = "FullName";