2012-05-17 2 views
0

У меня есть RichTextBox, который фокусируется при запуске программы. После того, как пользователь вводит определенное количество символов, я хочу, чтобы они не меняли/добавляли/etc что-либо еще в текстовое поле.Есть ли эквивалент java setFocusable() в C#?

Первоначально я написал это как приложение Java и использовал userInputBox.setFocusable(false), но я не могу найти эквивалентный способ его программного изменения в C#. Я создаю приложение Windows Forms. У меня нет другого контейнера или объекта, с которым я хочу взаимодействовать, поэтому я не могу использовать whatever.Focus(), чтобы вытащить его из моего текстового поля. Благодарю.

+0

Не было бы проще установить 'ReadOnly = true', если вы не хотите, чтобы пользователь менял содержимое? – vcsjones

+0

@vcsjones Не обязательно. Там может быть причина, по которой он не хочет, чтобы элемент управления был Focusable вообще. – Abion47

ответ

1

Установка ReadOnly = true или Enabled = false должна делать трюк, если только вам не нужен элемент управления, который не может быть сфокусирован, и в этом случае Одед имеет хороший ответ.

2

В C# есть модель события, которая широко используется в winforms.

Вы можете обработать событие управления GotFocus, чтобы сфокусировать его, вызвав Focus() на другой элемент управления.

+0

Если ваше приложение не имеет другого элемента управления для фокусировки, вы всегда можете установить фиктивный элемент управления и сделать его невидимым в некотором роде (например, ярлык без текста), а затем установите фокус на это. – Abion47

+0

@ Abion47 - Там всегда будет какой-то другой контроль. Если все, что у вас есть, это форма. – Oded

+0

OP говорит в своем вопросе, что не будет «какого-либо другого контейнера или объекта, с которым я хочу, чтобы пользователь взаимодействовал». Я просто добавляю обходной путь, чтобы удовлетворить его ситуацию. – Abion47