单击空白区域时,ListBox会导致程序崩溃

时间:2016-11-06 14:30:38

标签: c# visual-studio-2015 listbox

我正在创建一个翻转卡程序,可让您插入单词及其说明。该单词被添加到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.
        }
    }
}

Diagram of my program

文:

Infoga:插入
Redigera:编辑

请注意,程序中的所有功能都不包含在代码中!

1 个答案:

答案 0 :(得分:1)

ListBox.SelectedIndex是:

  

当前所选项目的从零开始的索引。如果未选择任何项,则返回负值1(-1)

Source

因此,如果没有选择任何项目:

        int b = listBox1.SelectedIndex;
        descriptiontbx.Text = details[b]; 

将导致崩溃,因为b为-1,这超出了数组的范围。在尝试使用该值之前,请添加一项检查以确保SelectedIndex >= 0