如何使用组合框.Winforms中Keydown事件后的文本

本文关键字:事件 文本 Keydown 何使用 组合 Winforms | 更新日期: 2023-09-27 18:19:49

我使用了一个没有下拉框的组合框,只接受文本输入。在windows窗体上,我有一个OK按钮,它调用一个使用组合框的函数。Text属性。

问题是,我想在用户键入内容然后点击ENTER时调用此函数。我正在尝试处理KeyDown事件(我尝试过其他结果几乎相同的事件),但我发现了组合框。触发后文本为null。我想要这样的东西理想地工作:

private void cbox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyValue == 13)
        {
            OK(cbox.Text); 
        }
    }  

为什么是combobox。KeyDown事件后删除的文本?文本框不会出现同样的问题,对吧?我几乎已经绝望了,但我不想在程序中的每一张表格上都替换这个盒子,哈哈……请建议!

如何使用组合框.Winforms中Keydown事件后的文本

您的表单上有多个组合框吗?该事件是针对cbox的,但您正在从cbo获得文本结果。

我建议将您的代码更改为:

private void cbox_KeyDown(object sender, KeyEventArgs e)
{
     if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
     {
          string result = cbox.Text;
     }
}

按下Enter键时,由于设置了自动完成模式,组合框会在事件发生之前清除文本。

只需将其更改为无。

cbox.AutoCompleteMode = AutoCompleteMode.None;