winforms - 如何在 C# 中的 WindowsForm 应用程序中更新 ListBox 中的项目
问题描述
我创建了一个 Windows 窗体应用程序,其中有一个 ListBox 来显示项目。当我单击一个项目时,它被选中,因为我已经实现了lst_items_SelectedIndexChanged()
方法,并且值被加载到要更新的控件中。但是,当我从控件更改值以更新也称为和 throws 中的选定索引时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);
知道如何在不超出异常索引的情况下进行更新吗?问候
解决方案
将其存储在 int 中
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();
}
推荐阅读
- django - 我以与用户表的一对一关系创建了一个额外的表额外表。如何在用户注册中显示电话字段
- c++ - C++ 替换:用 v.at(x) 替换每次出现的 v[x]
- python - 如何更改表单 CharField 中的默认空代表?
- android - 如何检查谷歌地图是否仅由用户手势(平移,倾斜,捏......)而不是以编程方式移动
- pytorch - 运行 pytorch 几何获取 CUDA 错误:调用 `cublasCreate(handle)` 时出现 CUBLAS_STATUS_NOT_INITIALIZED
- sql-server - SSAS(表格模型)和 SSRS 之间的超时
- python - 在 Python 中将 csv 文件解析为布尔表达式
- python - 向空数据框添加新列和值:ValueError
- anychart - anychart.ganttResource() 的一行中的子行;
- javascript - Wocomerce 变体无法正常工作