我動態創建了Listbox
並填充了一些項目,在Textbox
中輸入一個點後,我想顯示Listbox
,以便用戶可以使用箭頭鍵選擇任何項目。
到目前爲止,我做了一切。當用戶在Textbox
中鍵入一個點時,將顯示Listbox
,但箭頭鍵不會選擇任何項目!在C#中選擇動態創建的列表框項目
private void txtResults_KeyDown(object sender, KeyEventArgs e)
{
string[] words= ((TextBox)sender).Text.Split(' ');
string s = sampleWord.Text = words[words.Length - 1];
if (e.KeyCode == Keys.OemPeriod)
{
ShowPopUpList(s);
}
else if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Up)
{
lst.Focus();//doesnt work :-/
}
else
{
lst.Hide();
txtResults.Focus();
}
}
這對於FormLoad創建列表框()在ShowPopUpList(s)
的ShowListbox()
方法被調用的代碼
private void CreateListBox()
{
lst = new ListBox();
lst.Size = new Size(70, 130);
lst.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
lst.KeyDown += lst_KeyDown;
lst.DoubleClick += lst_DoubleClick;
//adding some test input
lst.Items.Add("بسم");
lst.Items.Add("الله ");
lst.Items.Add("الرحمن ");
lst.Items.Add("الرحیم ");
lst.Items.Add("بنام ");
lst.Items.Add("خداوند ");
lst.Items.Add("بخشنده ");
lst.Items.Add("مهربان ");
lst.Items.Add("الهی شکرت ");
}
private void ShowListbox()
{
txtResults.SelectionStart = txtResults.Text.Length;
txtResults.SelectionLength = 0;
Point index = txtResults.GetPositionFromCharIndex(txtResults.SelectionStart-1);
lst.Location = new Point (index.X-50, index.Y+70);
this.Controls.Add(lst);
lst.BringToFront();
lst.Show();
}
。沒有什麼奇特的!
注:
我只需要在列表框中當我使用向上或向下箭頭鍵來明確選擇一個項目獲得焦點。除非那時我需要能夠自由地繼續打字並且不會失去焦點到列表框。
這是怎麼回事?
您應該可能顯示您用來創建列表框的代碼。 –
我想你初始化和填充ShowPopUpList中的列表框,如果是這樣的話,所有初始化和項目添加將焦點放在那裏,並從文本框keydown處理程序中刪除它。 – terrybozzio
另外檢查列表框的SelectionMode –