Pregunta

Estoy escribiendo un control de formularios .NET para editar HTML usando MSHTML. Estoy creando algunos elementos personalizados y quiero que sean efectivamente de solo lectura. Pensé que podría hacer esto enfocándome en todo el elemento en cualquier momento en que el foco ingresara en cualquier parte de ese elemento pero HtmlElement.Focus () no selecciona todo el elemento y parece que no puedo capturar la entrada del cursor .

Otra opción sería generar un evento siempre que se cambie el texto del elemento (en KeyDown, espero), pero tampoco puedo hacer que ese evento se dispare. ¿Alguna idea sobre por qué mis expectativas sobre el comportamiento del evento son erróneas o sugerencias alternativas para la implementación?

¿Fue útil?

Solución

Encontré que configurando el atributo:

contentEditable=false

Resultó en el comportamiento deseado.

Otros consejos

En caso de que esté intentando aplicar un comportamiento de solo lectura a un control de Entrada de Usuario, puede intentar usar el atributo @readonly de ese control. De lo contrario, también podría agregar escuchas de eventos para los eventos de UI apropiados (keydown, mousedown) y evitar su comportamiento predeterminado (devolver false, o event.returnValue = false). En cuanto al envío de eventos personalizados, puede hacerlo. Use el nombre del evento que es conocido por IE. Y otra sugerencia podría ser: registrar un controlador de eventos onchange y revertir el valor de control al valor de defaultValue (propiedad de cualquier control de entrada).

Espero que algunas ideas ayuden.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top