我有一个按钮,可以将项目添加到检查列表框中。
private void btnDelivery_Click(object sender, EventArgs e)
{
deliveryForm.deliverytrips = new DeliveryTrips();
deliveryForm.ShowDialog();
if (deliveryForm.deliverytrips != null)
{
DeliveryTrips newApp = deliveryForm.deliverytrips;
theDelivery.addDeliveryTrip(newApp);
}
updateList();
}
private void updateList()
{
clbSummary.Items.Clear();
List<String> listOfDelivery = theDelivery.listDeliveryTrips();
clbSummary.Items.AddRange(listOfDelivery.ToArray());
}
使用按钮如何编辑,我已添加到核对表框中的内容或从核对表框中删除它?
刚才我有这个用于编辑项目
int index = clbSummary.SelectedIndex;
DeliveryTrips selected = theDelivery.getDeliveryTrips(index);
deliveryForm.deliverytrips = selected;
deliveryForm.ShowDialog();
updateList();
但仅在选中且未选中的情况下编辑项目,与删除按钮相同,仅删除项目(如果已选中且未选中)。
由于
答案 0 :(得分:2)
删除是最简单的部分。如果您的列表支持选中的单个项目(SelectionMode
One
),则可以执行类似
private void DeleteButton_Click(object sender, EventArgs
{
clbSummary.Items.RemoveAt(clbSummary.SelectedIndex);
}
现在,如果您支持多项选择(SelectionMode
MultiSimple
/ MultiExtended
- 适用于标准列表,而不是CheckboxLists,则以下代码将删除整个选择
private void DeleteButton_Click(object sender, EventArgs e)
{
for(int i = clbSummary.SelectedIndices.Count - 1; i >= 0; --i)
{
clbSummary.Items.RemoveAt(clbSummary.SelectedIndices[i]);
}
}
此处,撤消订单非常重要,否则项目中的删除会改变clbSummary
的内容,删除的项目越多,偏移量就越大。
如果你想删除Checked项目,它是一样的,但是你使用CheckedIndices
private void DeleteButton_Click(object sender, EventArgs e)
{
for (int i = clbSummary.CheckedIndices.Count - 1; i >= 0; --i)
{
clbSummary.Items.RemoveAt(clbSummary.CheckedIndices[i]);
}
}
要编辑,我建议创建一个表单来编辑项目的内容,或者如果它只是一个字符串,也许一个简单的输入对话框就足够了(我真的简化它使用Microsoft.VisualBasic
的引用来使用InputBox
)。通常,您的商品可能对应于比字符串更复杂的对象,因此可能需要适当的Editor
(专门用于编辑商品的表单)
private void EditButton_Click(object sender, EventArgs e)
{
string content = clbSummary.SelectedItem.ToString();
string newValue = Interaction.InputBox("Provide new value", "New Value", content, -1, -1);
int selectedIndex = clbSummary.SelectedIndex;
clbSummary.Items.RemoveAt(selectedIndex);
clbSummary.Items.Insert(selectedIndex, newValue);
}