

從支出點到收入,彈出錯誤如上圖
private void rdoExpenditure_CheckedChanged(object sender, EventArgs e)
{
cboCatogory.Items.Clear();
if(rdoExpenditure.Checked == true)
{
cboCatogory.Items.Add("生活消費");
cboCatogory.Items.Add("固定資產");
cboCatogory.Items.Add("休閑娛樂");
}
else
{
cboCatogory.Items.Add("作業收入");
cboCatogory.Items.Add("投資收益");
cboCatogory.Items.Add("其他收入");
}
cboCatogory.SelectedIndex = 0;
}
cboCatogory是收支類別的組合框,具體Item由收支型別決定。代碼跟書上的一樣,不知道為什么會出錯,請大神指點,謝謝。
uj5u.com熱心網友回復:
if(rdoExpenditure.Checked == true)
{
cboCatogory.Items.Add("生活消費");
cboCatogory.Items.Add("固定資產");
cboCatogory.Items.Add("休閑娛樂");
}
else
{
cboCatogory.Items.Add("作業收入");
cboCatogory.Items.Add("投資收益");
cboCatogory.Items.Add("其他收入");
}
cboCatogory.SelectedIndex = 0;
這樣子試試
uj5u.com熱心網友回復:
你檢查一下 cboCatogory 是否有 SelectedIndexChange 事件。cboCatogory.Items.Clear() 這句會引發 SelectedIndexChange 事件,而 SelectedIndexChange 事件如果有代碼使用 cboCatogory.Items[0]則會引發例外(因為所有條目 Clear 掉了,沒有索引為 0 的項了)。uj5u.com熱心網友回復:
cboCatogory是有selectedIndexChange事件,可是里面沒用到Items[0],還是不明白為什么出錯,代碼如下:
private void cboCatogory_SelectedIndexChanged(object sender, EventArgs e)
{
if(cboCatogory.Items.Count > 0)
{
listBox1.Items.Clear();
switch (cboCatogory.Items.ToString())
{
case "生活消費":
listBox1.Items.Add("吃");
listBox1.Items.Add("喝");
break;
case "作業收入":
listBox1.Items.Add("正常工資");
listBox1.Items.Add("獎金");
break;
}
listBox1.SelectedIndex = 0;
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
uj5u.com熱心網友回復:
還是不行
uj5u.com熱心網友回復:
專案選debug模式,在除錯模式想讓他報錯再截圖看看吧,可能不是你說的位置報錯uj5u.com熱心網友回復:

本來就是debug模式的
uj5u.com熱心網友回復:
你這是編譯沒通過,運行的是之前編譯的代碼吧?uj5u.com熱心網友回復:
listBox1.Items.Clear();
//問題在這里 這個得到的不是選中項
//而是所有選項的集合 直接ToString并不能進入到switch里
//改成SelectedItem即可
//comboBox1.Items.ToString()
switch (comboBox1.SelectedItem.ToString())
{
case "生活消費":
listBox1.Items.Add("吃");
listBox1.Items.Add("喝");
break;
case "作業收入":
listBox1.Items.Add("正常工資");
listBox1.Items.Add("獎金");
break;
}
listBox1.SelectedIndex = 0;
uj5u.com熱心網友回復:

請問這樣呢?
uj5u.com熱心網友回復:
是的,是listbox出錯,原因上面已經有說了uj5u.com熱心網友回復:
是的!我沒注意到,謝謝!
uj5u.com熱心網友回復:
switch 里面的case判斷沒進, 導致你先clear了集合 然后去 listBox1.SelectedIndex = 0; 自然要報錯uj5u.com熱心網友回復:
系結資料問題你最好用 DataSource 屬性來賦值資料, Items.Add 再系結上不太一樣。因為資料系結沒有觸發,所以就 出錯了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/127383.html
標籤:C#
