2012-05-08 2 views
4

У меня есть простое поле поиска в форме, которая задана как многострочная (я понимаю, это единственный способ изменить высоту текстового поля) и имеет флаг AcceptsReturn, установленный в false.AcceptsReturn on TextBox не работает правильно

Однако, когда я нажимаю кнопку ввода внутри этого элемента управления, вместо того, чтобы активировать кнопку по умолчанию, как она должна, она помещает символ возврата.

Теперь я также попытался использовать событие KeyPress, чтобы проверить, нажата ли клавиша Enter, чтобы активировать функцию нажатия кнопки поиска в надежде на то, что она переопределит это поведение возврата, но это не так. Теперь он просто запускает поиск и вставляет возвращаемый символ.

Я запускаю Visual Studio 2010 (хотя эта проблема, похоже, присутствовала и в 2008 году, прежде чем я ее преобразовал) и C# .NET 2.0. Любые решения?

+0

Пожалуйста, не префишируйте свои заголовки с помощью «C# .NET» и т.п. Для этого нужны теги. Кроме того, я предполагаю, что это Windows Forms? –

+0

Это правильно. – CJxD

+2

Я просто попытался дублировать вашу проблему без успеха. Я создал новую форму с кнопкой и текстовым полем (многострочным), я установил textbox.acceptreturn в false. и я установил кнопку принятия форм на кнопку 1 (моя кнопка), событие нажатия кнопки запускает сообщение. Когда я набрал что-то и нажал, он запустил окно сообщения и не добавил символ возврата в текстовое поле. Вы уверены, что вы установили кнопку «Принимать формы» –

ответ

4

Форма имеет свойство под названием AcceptButton. Это указывает на кнопку, которую вы вызываете по умолчанию: ?

Я только что написал небольшое испытание и, похоже, работает для меня.

+0

Это действительно проблема. В моем конкретном случае я могу программно ввести кнопку принятия основной формы, когда я вхожу в конкретную панель поиска. Теперь он работает правильно! – CJxD

+1

Обратите внимание, что это перестает работать при установке AcceptsReturn в true. Это то, что на самом деле делает собственность. Вы получили ответ в тексте, потому что вы забыли e.SuppressKeyPress = e.Handled = true; –

5

Я вижу, что ответ уже размещен, в котором упоминается свойство AcceptButton, но я полагаю, что я бы более четко указывалось почему что необходимо: молвил MSDN, на AcceptsReturn, «Если нет кнопки не по умолчанию для формы , клавиша ENTER всегда создает новую строку текста в элементе управления, независимо от значения этого свойства. " (Я просто попробовал это на фиктивной форме - по кнопке «по умолчанию», они на самом деле означали свойство AcceptButton формы. С одним набором значение AcceptsReturn имело значение, без одного оно не имело никакого эффекта.)

Что касается KeyPress, в то время как это, очевидно, не самый лучший способ в этом случае, мне приходилось использовать трюки, подобные тому, что было в прошлом, - вы не забыли установить e.Handled в true в случае, если вы сами обработали событие?

+0

Спасибо за подсказку e.Handled, я даже не знал, что это существовало! – CJxD

Смежные вопросы