2014-02-20 26 views
0

我知道這是問過很多次,但這是問題。我不想將很多項目添加到列表框中,滾動到底部並關注文本框。我試圖使用如何滾動到列表框的底部c#

MyListBox.SelectedItem = = MyListBox.Items[MyListBox.Items.Count - 1]; 

但它選擇最後一個項目,它不會集中文本框。我也嘗試通過將列表框選擇設置爲null來清除列表框,但是然後它將滾動條返回到頂部。我也試着用listbox.SelectedIndex來做所有這些事情,後來將它設置爲-1,但它給了我同樣的問題。

+0

您是使用winforms還是wpf?列表框中的文本框在哪裏? – Dominic

+0

我正在使用winforms。文本框在列表框旁邊。在填充數據之後,我要將焦點置於列表框中,以便用戶可以添加新行。用戶按下輸入或單擊按鈕後,我想將文本框文本添加到列表框的底部,然後再次向下滾動,以便用戶始終可以看到最後插入的行是什麼。 – user2081328

+0

您是否嘗試過在選擇列表框中的最後一項後調用textbox.Focus()? – Dominic

回答

0

在按鈕上單擊,您可以設置所選項目,該項目將滾動列表框,然後在文本框中使用「焦點」。

private void button1_Click(object sender, EventArgs e) 
    { 
     listBox1.DisplayMember = "Text"; 
     // Make the item unique, incase of adding more 
     // than one item with the same text. 
     listBox1.Items.Add(new { textBox1.Text, Guid = Guid.NewGuid() }); 

     listBox1.SelectedItem = listBox1.Items[listBox1.Items.Count - 1]; 

     textBox1.Text = ""; 
     textBox1.Focus(); 
    } 
+0

Focus()對我來說工作正常 – Dominic

+0

我已經用Focus()測試了更新後的代碼並且工作正常。看起來Focus()在窗體構造函數中不起作用,但在放置在按鈕點擊的事件處理函數內時工作。 –

+0

我沒有Focus()的問題。我有問題listbox1.SelectedItem = null。在這行代碼之後,它返回列表框滾回到頂部。 – user2081328