如何使用数据源将新项目添加到列表框中

本文关键字:列表 添加 新项目 何使用 数据源 | 更新日期: 2023-09-27 18:00:02

我创建了一个winform应用程序,它包含3个文本框(pcnopcnamepcipadd)、一个使用数据源的列表框和一个添加新项目的按钮。我在列表框中添加项目时遇到问题。我在添加项目按钮上使用此代码:

_pcno.Add(new PCNo() { PCNO = pcno.Text, 
                       PCNAME = pcname.Text, 
                       IPADDRESS = pcipadd.Text });

上面的代码成功添加了新项目,但列表框中选定的项目也已更新。

详细地说,我目前在我的列表框中有一个"PCN01"。然后我转到我的文本框(pcno.text),然后写入新值(例如"PC02")并单击按钮添加项目。结果是添加了项目,但"PC01"也更新为"PC02。重新加载表单(重新打开)后,所有内容都变回正常,"PC01"及其值和"PC02"及其值。我只是不想在添加新项目时更新列表框中选定的项目。有什么想法吗?

好的,简单地说,这就是我要做的,你可以尝试一下,如果你添加了新项目,所选项目也会更新:

using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace PCListing
{
public partial class Form1 : Form
{
    private BindingList<mylist> _pcno;
    private ListBox listBox1;
    private TextBox pcno;
    private TextBox pcname;
    private Button btnAdd;
    public Form1()
    {
        InitializeComponent();
        FlowLayoutPanel layout = new FlowLayoutPanel();
        layout.Dock = DockStyle.Fill;
        Controls.Add(layout);
        listBox1 = new ListBox();
        layout.Controls.Add(listBox1);
        pcno = new TextBox();
        layout.Controls.Add(pcno);
        pcname = new TextBox();
        layout.Controls.Add(pcname);
        btnAdd = new Button();
        btnAdd.Click += btnAdd_Click;
        btnAdd.Text = "Add Item";
        layout.Controls.Add(btnAdd);
        Load += new EventHandler(Form1_Load);
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        _pcno = new BindingList<mylist>();
        _pcno.Add(new mylist() { pcno = "1", pcname = "PC01" });
        _pcno.Add(new mylist() { pcno = "2", pcname = "PC02" });
        listBox1.DisplayMember = "pcno";
        listBox1.DataSource = _pcno;
        pcno.DataBindings.Add("Text", _pcno, "pcno");
        pcname.DataBindings.Add("Text", _pcno, "pcname");
    }
    private void btnAdd_Click(object sender, EventArgs e)
    {
            _pcno.Add(new mylist() { pcno =pcno.Text, pcname = pcname.Text });
    }
    public class mylist
    {
        public string pcname { get; set; }
        public string pcno { get; set; }
    }
}
}

如何使用数据源将新项目添加到列表框中

问题是由TextBox数据绑定引起的。

pcno.DataBindings.Add("Text", _pcno, "pcno");
pcname.DataBindings.Add("Text", _pcno, "pcname");

在该表单中,当您编辑文本框中的值时,DataSource会更新。

您可以考虑将这些行更改为:

pcno.DataBindings.Add("Text", _pcno, "pcno", false, DataSourceUpdateMode.Never);
pcname.DataBindings.Add("Text", _pcno, "pcname", false, DataSourceUpdateMode.Never);