отключить ключевое событие, когда фокус находится на поле автозаполнения текстового поля
В моем проекте есть ФормаmainForm
в котором есть два текстовых поляtxtUserName
а такжеtxtPassword
а также кнопкаbtnLogin
.
Я дал следующееtxtUserName
свойства:
txtUserName Properties
AutoCompleteCustomSource - Collection
--> Administrator
--> Clerk
AutoCompleteMode - Suggest
AutoCompleteSource - CustomSource
btnLogin_Click Event
if (txtUserName.Text.Equals("Administrator") && txtPassword.Text.Equals("123"))
{
//function to access admin features
}
else if (txtUserName.Text.Equals("Clerk") && txtPassword.Text.Equals("123"))
{
//function to access clerk features
}
else
{
MessageBox.Show("Please Enter correct details", "Login Error");
}
Я установилmainForm
keypreview
вtrue
и реализовал функцию для события keyDownmainForm
что показано в приведенном ниже коде:
mainForm_KeyDownEvent
if (e.KeyCode.Equals(Keys.Enter)) //Invokes whenever Enter is pressed
{
btnLogin_Click(sender,e); //login
}
Теперь моя проблема в том, что когда быtxtUserName
и нажавA
в раскрывающемся списке выберите «Администратор» (который определяется в коллекциях, как я показал в свойствах выше). Когда я нажимаюEnter
на клавиатуре отображается MessageBox вместо выбора «Администратор». Я знаю, что вызывает событие keydownmainForm
, Как отключить событие keyDown, когда оно находится в выпадающем меню текстового поля, чтобы я мог нажатьenter
?
EDIT:
Я попробовал приведенный ниже код вpublic form()
:(not working)
InitializeComponent();
if (txtUserName.AutoCompleteMode) { /* showing red scribbles */
this.KeyDown -= mainForm_KeyDown;
}