2014-02-20 25 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