如何在 C# 的 Windows 窗体应用程序中更新列表框中的项目
How to update item in ListBox in WindowsForm Application in C#
我创建了一个 windows 表单应用程序,其中有一个用于显示项目的列表框。当我点击一个项目时,它被选中,因为我已经实现了 lst_items_SelectedIndexChanged()
方法,并且值被加载到要更新的控件中。但是当我更改控件的值以更新选定的索引时,也会调用并抛出 Index Out of Bounds -1 Exception
。
这是我的 SelectedIndexChanged 代码:
private void lst_items_SelectedIndexChanged(object sender, EventArgs e)
{
ShoppingItem myItem = new ShoppingItem();
if (lst_items.SelectedIndex > -1)
{
myItem = itemManager_obj.GetItem(lst_items.SelectedIndex);
txt_amount.Text = myItem.amount.ToString();
txt_description.Text = myItem.description;
cmb_units.SelectedIndex = (int)myItem.unit;
}
}
这是我的更新(更改)按钮代码:
private void btn_change_Click(object sender, EventArgs e)
{
ShoppingItem itemToChange = new ShoppingItem();
itemToChange = itemManager_obj.GetItem(lst_items.SelectedIndex);
bool success = false;
itemToChange = ReadIput(out success);
if (success)
{
success = itemManager_obj.ChangeItem(itemToChange,lst_items.SelectedIndex);
lst_items.Items.RemoveAt(lst_items.SelectedIndex);
lst_items.Items.Insert(lst_items.SelectedIndex, itemManager_obj.ToString());
UpdateGUI();
}
}
我不确定为什么在执行这行代码后更新时调用 SelectedIndexChanged
:
lst_items.Items.RemoveAt(lst_items.SelectedIndex);
知道如何在不让异常索引越界的情况下进行更新吗?
问候
将其存储在一个整数中
lst_items.Items.RemoveAt(lst_items.SelectedIndex);
然后做
lst_items.Items.Insert(your int, itemManager_obj.ToString());
您收到此错误消息是因为在您删除 selectedIndex
后,不再有选定的项目,因为该项目不存在。
if (success)
{
int indexer=lst_items.SelectedIndex;
success = itemManager_obj.ChangeItem(itemToChange,lst_items.SelectedIndex);
lst_items.Items.RemoveAt(indexer);
lst_items.Items.Insert(indexer, itemManager_obj.ToString());
UpdateGUI();
}
我创建了一个 windows 表单应用程序,其中有一个用于显示项目的列表框。当我点击一个项目时,它被选中,因为我已经实现了 lst_items_SelectedIndexChanged()
方法,并且值被加载到要更新的控件中。但是当我更改控件的值以更新选定的索引时,也会调用并抛出 Index Out of Bounds -1 Exception
。
这是我的 SelectedIndexChanged 代码:
private void lst_items_SelectedIndexChanged(object sender, EventArgs e)
{
ShoppingItem myItem = new ShoppingItem();
if (lst_items.SelectedIndex > -1)
{
myItem = itemManager_obj.GetItem(lst_items.SelectedIndex);
txt_amount.Text = myItem.amount.ToString();
txt_description.Text = myItem.description;
cmb_units.SelectedIndex = (int)myItem.unit;
}
}
这是我的更新(更改)按钮代码:
private void btn_change_Click(object sender, EventArgs e)
{
ShoppingItem itemToChange = new ShoppingItem();
itemToChange = itemManager_obj.GetItem(lst_items.SelectedIndex);
bool success = false;
itemToChange = ReadIput(out success);
if (success)
{
success = itemManager_obj.ChangeItem(itemToChange,lst_items.SelectedIndex);
lst_items.Items.RemoveAt(lst_items.SelectedIndex);
lst_items.Items.Insert(lst_items.SelectedIndex, itemManager_obj.ToString());
UpdateGUI();
}
}
我不确定为什么在执行这行代码后更新时调用 SelectedIndexChanged
:
lst_items.Items.RemoveAt(lst_items.SelectedIndex);
知道如何在不让异常索引越界的情况下进行更新吗? 问候
将其存储在一个整数中
lst_items.Items.RemoveAt(lst_items.SelectedIndex);
然后做
lst_items.Items.Insert(your int, itemManager_obj.ToString());
您收到此错误消息是因为在您删除 selectedIndex
后,不再有选定的项目,因为该项目不存在。
if (success)
{
int indexer=lst_items.SelectedIndex;
success = itemManager_obj.ChangeItem(itemToChange,lst_items.SelectedIndex);
lst_items.Items.RemoveAt(indexer);
lst_items.Items.Insert(indexer, itemManager_obj.ToString());
UpdateGUI();
}