#.net #dom #mshtml
Вопрос:
Я пишу элемент управления .NET forms для редактирования HTML с помощью MSHTML. Я создаю некоторые пользовательские элементы и хочу, чтобы они были доступны только для чтения. Я думал, что смогу сделать это, сосредоточившись на всем элементе в любое время, когда фокус будет введен в любом месте этого элемента, кроме HTMLElement.Фокус() не выделяет весь элемент, и я, похоже, не могу зафиксировать ввод курсора.
Другим вариантом было бы вызывать событие всякий раз, когда изменяется текст элемента (я ожидаю, что при нажатии клавиши), но я также не могу запустить это событие. Есть какие-нибудь идеи о том, почему мои ожидания относительно поведения событий неверны, или альтернативные предложения по реализации?
Ответ №1:
Я обнаружил, что установка атрибута:
contentEditable=false
Привело к желаемому поведению.
Ответ №2:
В случае, если вы пытаетесь применить поведение только для чтения к элементу управления пользовательским вводом, вы можете попробовать использовать атрибут @readonly этого элемента управления. В противном случае вы также можете добавить прослушиватели событий для соответствующих событий пользовательского интерфейса (keydown, mousedown) и предотвратить их поведение по умолчанию (return false или event.returnValue = false). Что касается отправки пользовательских событий, вы действительно можете это сделать. Используйте имя события, известное IE. И еще одна подсказка может быть такой: зарегистрируйте обработчик событий onchange и верните значение элемента управления к значению defaultValue (свойство любых входных элементов управления).
Надеюсь, некоторые идеи помогут.