编辑&使用按钮删除检查列表框中的项目

时间:2012-11-22 16:14:17

标签: c# .net visual-studio-2010 user-interface checklistbox

我有一个按钮,可以将项目添加到检查列表框中。

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();

但仅在选中且未选中的情况下编辑项目,与删除按钮相同,仅删除项目(如果已选中且未选中)。

由于

1 个答案:

答案 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);
}