Domanda

Sto scrivendo un controllo di moduli .NET per modificare HTML usando MSHTML. Sto creando alcuni elementi personalizzati e voglio renderli effettivamente di sola lettura. Ho pensato di poterlo fare concentrandomi sull'intero elemento ogni volta che lo stato attivo è entrato ovunque in quell'elemento, ma HtmlElement.Focus () non seleziona l'intero elemento e non riesco a catturare l'ingresso del cursore .

Un'altra opzione sarebbe quella di generare un evento ogni volta che il testo dell'elemento viene modificato (su KeyDown, mi aspetto), ma non riesco nemmeno a far scattare quell'evento. Qualche idea sul perché le mie aspettative sul comportamento degli eventi siano sbagliate o suggerimenti alternativi per l'implementazione?

È stato utile?

Soluzione

Ho scoperto che l'impostazione dell'attributo:

contentEditable=false

Ha comportato il comportamento desiderato.

Altri suggerimenti

Nel caso in cui si stia tentando di applicare un comportamento di sola lettura a un controllo Input utente, è possibile provare a utilizzare l'attributo @readonly di quel controllo. Altrimenti, potresti anche aggiungere listener di eventi per gli eventi UI appropriati (keydown, mousedown) e prevenirne il comportamento predefinito (return false o event.returnValue = false). Per quanto riguarda l'invio di eventi personalizzati, puoi davvero farlo. Utilizzare il nome dell'evento noto a IE. E un altro suggerimento potrebbe essere: registrare un gestore eventi onchange e ripristinare il valore di controllo sul valore di defaultValue (proprietà di tutti i controlli di input).

Spero che alcune idee possano aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top