2012-07-26 49 views
0

更新!C#以編程方式更改列表視圖中的所選項目

澄清問題。我想通過使用向上和向下箭頭來更改我的列表視圖中的選定項目。我已將keydown併入文本框。如果用戶按下句點鍵,我可以看到我的列表視圖。但它並不專注,這就是爲什麼我將keydown事件綁定到文本框以便能夠在列表視圖中更改selecteditem。

是visuaö工作室抱怨的代碼是這樣

index = listView1.SelectedIndices[0]; 

零是有點錯了嗎?我正在使用列表視圖

如何以編程方式更改列表視圖selecteditem?我目前正在傾聽向上箭頭和向下箭頭的按鍵事件。

當他們被按下,我想改變選定的物品指數。所以它的行爲與按下向上或向下箭頭時的表現一樣!

我一直在嘗試,但它給了我一個醜陋的錯誤消息。

參數超出範圍的異常與是這樣的附加信息:

值0不是有效的索引。這是我的向下箭頭的代碼。

它真的應該工作我對此完全無能爲力!

if (e.KeyCode == Keys.Down) 
{ 
    if (listView1.Visible) 
    { 
     index = listView1.SelectedIndices[0]; 
     index = index - 1; 
     this.listView1.Items[index].Selected = true; 
    } 
} 

和向上箭頭

if (e.KeyCode == Keys.Up) 
{ 
    if (this.listView1.Visible) 
    { 
     index = listView1.SelectedIndices[0]; 
     index++; 
     this.listView1.Items[index].Selected = true; 
    } 
} 
+0

歡迎來到Stack Overflow。將來,請提供您收到的*確切*錯誤或異常情況,包括儘可能詳細的信息。解釋錯誤信息對我們沒有任何好處。 – Kivin 2012-07-26 22:02:20

+1

你在哪裏得到例外?關鍵或關鍵?對我來說,看起來你沒有任何列表中的項目,因此在訪問項目0時出現索引超出限制。 – 2012-07-26 22:02:41

+0

我不明白這個問題。當您使用鍵盤時,重點項目當然是唯一選定的項目嗎? – 2012-07-26 22:19:25

回答

1

試試這個:

if (e.KeyCode == Keys.Down) 
{ 
    if (listView1.Visible && listView1.Items.Count > 0) 
    { 
     index = listView1.SelectedIndices[0]; 
     index = index - 1; 
     this.listView1.Items[index].Selected = true; 
    } 
} 

我覺得你得到一個IndexOutOfBound,因爲你沒有在列表中的任何項目。

相關問題