C# 列表框删除
我有一个列表框,有两个按钮,新建和删除。新建会将一个项目添加到列表框中,删除按钮会将该项目从列表框中删除。列表框项目绑定到一个类,该类存储下面文本框中用户输入的数据C# 列表框删除,c#,winforms,C#,Winforms,我有一个列表框,有两个按钮,新建和删除。新建会将一个项目添加到列表框中,删除按钮会将该项目从列表框中删除。列表框项目绑定到一个类,该类存储下面文本框中用户输入的数据 private void AddListBox() { lstCondition.BeginUpdate(); Condition cond = new Condition(""); cond.Name = string.Format("Conditi
private void AddListBox()
{
lstCondition.BeginUpdate();
Condition cond = new Condition("");
cond.Name = string.Format("Condition {0}", _selection.NetConditions.Count + 1);
_selection.NetConditions.Add(cond);
lstCondition.EndUpdate();
lstCondition.SelectedItem = cond;
cboNetCondition.Properties.Items.Clear();
cboNetCondition.Properties.Items.AddRange(NetCondition);
cboControlType.Properties.Items.Clear();
cboControlType.Properties.Items.AddRange(ControlType);
cboFlowRate.Properties.Items.Clear();
cboFlowRate.Properties.Items.AddRange(FlowRate);
}
private void btnNew_Click(object sender, EventArgs e)
{
AddListBox();
}
cbo项是组合框,其数据在条件类中绑定到列表框的每个实例
public frmNetConditions(Condition condo, Selection selection)
{
InitializeComponent();
_selection = selection;
lstCondition.DataSource = _selection.NetConditions;
condition = _selection.NetConditions.Count;
}
private void btnDelete_Click(object sender, EventArgs e)
{
selectedCondition = (Condition)lstCondition.SelectedItem;
cboControlType.SelectedIndex = -1;
cboNetCondition.SelectedIndex = -1;
cboFlowRate.SelectedIndex = -1;
txtFlowRate.Text = string.Empty;
txtStatPressure.Text = string.Empty;
txtDampOpening.Text = string.Empty;
txtDensity.Text = string.Empty;
cboDensity.SelectedIndex = -1;
lstCondition.Items.Remove(lstCondition.SelectedItem);
lstCondition.Refresh();
}
按下这个删除按钮后,列表框仍然包含我想删除的项目,我不确定为什么会这样
使用数据源更新
public List<Condition> NetConditions { get { return _netconditions; } }
public List NetConditions{get{return}\u NetConditions;}
如前所述,您应该绑定到绑定列表,而不是列表
。这允许您更改数据源和控件(ListBox
),以获得更改通知。代码应该如下所示:
lstCondition.ValueMember = "ConditionId";
lstCondition.DisplayMember = "Name";
lstCondition.DataSource = NetConditions;
定义绑定后,对列表框
项进行操作的正确方法是从数据源
中删除,而不是从列表框
本身中删除:
// SelectedItem should be checked for null (no selection is an option)
NetCondition.Remove((Condition)lstCondition.SelectedItem);
但是,如果您计划更改某个元素的属性(因此,不是列表本身),则仅当您的元素(条件)实现了接口时,才会通知控件。是否可以发布与列表框相关的全部代码?是否将列表绑定到列表或类似的内容?lstCondition
似乎没有填充,但是您尝试分配它的SelectedItem.lstCondition是listbox让我编辑用户当前突出显示的选定项目。好的,这是不可能的,因为它是列表,而不是绑定列表。我认为这是最方便的方式。这只是一个增强的通用列表,可以在绑定场景中使用。