我正在创建一个翻转卡程序,可让您插入单词及其说明。该单词被添加到ListBox,而描述保存在字符串数组中。我已经告诉程序在点击ListBox项目后找到正确的描述,如下面的代码所示。虽然如果用户单击ListBox中的空白区域,这会导致程序崩溃。我怎么能绕过这个?
public partial class Form1 : Form
{
int i = 0;
string[] details = new string[20];
private void insertbtn_Click(object sender, EventArgs e)
{
listBox1.Items.Add(inserttbx.Text); //Adds word to the ListBox
}
private void editDescbtn_Click(object sender, EventArgs e)
{
details[i] = descriptiontbx.Text; //adds text from descriptiontbx to "details" array
i++;
}
private void listBox1_Click(object sender, EventArgs e)
{
if(i == 0) //int i equals the amount of items in the ListBox.
{
}
else
{
int b = listBox1.SelectedIndex;
descriptiontbx.Text = details[b];
//"details" string array, will open the correct description
//depending on which ListBox item is selected.
}
}
}
文:
Infoga:插入
Redigera:编辑
请注意,程序中的所有功能都不包含在代码中!
答案 0 :(得分:1)
ListBox.SelectedIndex
是:
当前所选项目的从零开始的索引。如果未选择任何项,则返回负值1(-1)
因此,如果没有选择任何项目:
int b = listBox1.SelectedIndex;
descriptiontbx.Text = details[b];
将导致崩溃,因为b为-1,这超出了数组的范围。在尝试使用该值之前,请添加一项检查以确保SelectedIndex >= 0
。