gpt4 book ai didi

c# - 在 C# 中选择动态创建的列表框项目

转载 作者:行者123 更新时间:2023-11-30 12:47:02 25 4
gpt4 key购买 nike

我动态创建了一个 Listbox 并用一些项目填充它,在 Textbox 中输入一个点后我想显示 Listbox 所以用户可以使用箭头键选择任何项目。
到目前为止,我做了一切。当用户在 Textbox 中键入一个点时,将显示 Listbox,但箭头键不会选择任何项目!

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() 上创建列表框的代码

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(s) 中调用了 ShowListbox() 方法。没什么好看的!

注意:

当我使用向上或向下箭头键明确选择一个项目时,我只需要列表框获得焦点。除非那时我需要能够自由地继续打字并且不会失去对列表框的关注。
这样做的方法是什么?

最佳答案

从文本框按键处理程序中移除焦点并将其放置在这里:

        private void ShowPopUpList(string s)
{
//your initialization of the
//listbox here and after..
listBox1.Focus();
}

另一种方式:

if (e.KeyCode == Keys.OemPeriod)
{
ShowPopUpList(s);
listBox1.Focus();
}

真正的大区别在于它会立即获得焦点。您的旧代码将首先检查 keydown 并且在第二次点击时它已经包含焦点。

最终编辑:

如果 Listbox 需要将焦点放在上/下箭头键上(并且仅使用这些键):

if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Up)
{
ShowPopUpList();
listBox1.Focus();
listBox1.SelectedIndex = 0;
}

关于c# - 在 C# 中选择动态创建的列表框项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com