Я создал приложение Windows Form, в котором есть ListBox для отображения элементов.Когда я нажимаю на элемент, он выбирается, поскольку я реализовал метод lst_items_SelectedIndexChanged()
, и значения загружаются в элементы управления для обновления.Но когда я изменяю значение из элементов управления для обновления, выбранный индекс также вызывается и выдает Index Out of Bounds -1 Exception
.
Вот мой SelectedIndexChanged Code :
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);
Любая идея, как я могу обновить без получения индекса исключения вне границ?Привет