我创建了一个包含 3 个文本框( 和 )、一个使用数据源的列表框和一个添加新项目的按钮的 winformpcno
应用pcname
程序pcipadd
。我无法将项目添加到我的列表框中。我在添加项目按钮上使用此代码:
_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; }
}
}
}