0

我有一个将项目添加到复选框的按钮。

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

但这仅在选中且未选中时编辑项目,与删除按钮相同,仅在选中且未选中时删除项目。

谢谢

4

1 回答 1

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]);
    }
}

在这里,颠倒顺序很重要,否则items中的删除会改变你的内容,clbSummary删除的item越多,偏移量就会越大。

如果你想删除 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.VisualBasicInputBox。通常您的项目可能对应于比字符串更复杂的对象,因此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);
}
于 2012-11-22T16:50:11.093 回答