如何在Winforms中的Keydown事件之后使用combobox.Text

时间:2012-01-10 11:55:22

标签: c# winforms text combobox keydown

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

问题是我想在用户输入内容然后点击ENTER时调用此函数。我正在尝试处理KeyDown事件(我已经尝试了其他具有相同结果的事件),但我发现在此触发后,combobox.Text为null。我想要这样的东西理想地工作:

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

为什么在KeyDown事件之后擦除了combobox.Text?对于Textbox,这个问题不会发生吗?我几乎绝望了但是我不想在程序中的每个表格上替换这个盒子lol ...请指教!

2 个答案:

答案 0 :(得分:1)

您的表单上是否有多个ComboBox?该活动适用于cbox,但您将从cbo获得文字结果。

我建议您将代码更改为:

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

答案 1 :(得分:0)

当按下Enter键时,由于设置了AutoCompleteMode,ComboBox将清除事件发生之前的文本。

只需将其更改为无。

package lab14.panoslab.Repositories;

import lab14.panoslab.Models.Account;
import org.apache.catalina.User;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserRepository extends JpaRepository<Account,Long> {
    @NotFound(action = NotFoundAction.IGNORE)
List<User> findByUsername(String username);
}