为了账号安全,请及时绑定邮箱和手机立即绑定

按下“1”时,列表框循环显示项目

按下“1”时,列表框循环显示项目

C#
四季花海 2021-06-21 16:50:12
我正在创建一个带有 ListBox 的应用程序。我希望用户能够点击它,开始输入,并看到他们的文本出现在该项目中。下面是一个几乎有效的简化版本:using System.Windows.Forms;namespace ListboxTest{    public partial class ListboxTest : Form    {        InitializeComponent();        listBox1.Items.Add("");        listBox1.Items.Add("");        listBox1.KeyPress += new KeyPressEventHandler(ListBoxKeyPress);    }    private void ListBoxKeyPress(object sender, KeyPressEventArgs e)    {        ListBox lbx = (ListBox)sender;        if (lbx.SelectedIndices.Count != 1)            return;        int temp = lbx.SelectedIndex;        string value = lbx.Items[temp].ToString();        value += e.KeyChar;        lbx.Items[temp] = value;    }}选择 ListBox 后,用户可以开始输入并查看显示的文本。一切都按预期进行,直到发生两件事:用户从一项切换到另一项(单击进入不同的输入或使用向上/向下箭头),然后按用户按下与未选择项目名称中的第一个字符对应的键。从那时起,只要用户按下那个键(在我的例子中是“1”),ListBox 的选定项就会改变。只有两个项目(都以“1”开头)时,按“1”会导致 ListBox 将所选项目从索引 0 切换到索引 1(反之亦然)。我做了一些实验,这就是我发现的。如果 ListBox 有两个以上的项目,它将循环遍历所有以前输入的具有相同起始字符的元素。从未选择过的项目将被跳过。我试过的:清除选定的索引 ListBox.SetSelected(int index, bool selected)清除选定的索引 ListBox.ClearSelected()设置Listbox.SelectionMode为SelectionMode.One我使用的是 VS 2015 Professional、Windows 7 SP1 (x64)、C# 6.0 和目标 .NET 4.6.1。所以,我的问题是:发生了什么,我该如何解决?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信