Question

J'écris un contrôle de formulaire .NET pour modifier le code HTML à l'aide de MSHTML. Je crée des éléments personnalisés et je souhaite les rendre en lecture seule. Je pensais pouvoir y arriver en me concentrant sur l'élément entier à n'importe quel moment où le focus était entré n'importe où dans cet élément, mais HtmlElement.Focus () ne sélectionnait pas l'élément en entier et je ne semblais pas en mesure de capturer l'entrée du curseur. .

Une autre option serait de déclencher un événement chaque fois que le texte de l'élément est modifié (sur KeyDown, je m'attends), mais je ne parviens pas non plus à faire déclencher cet événement. Avez-vous une idée de la raison pour laquelle mes attentes concernant le comportement de l'événement sont fausses ou des suggestions alternatives pour la mise en œuvre?

Était-ce utile?

La solution

J'ai constaté que définir l'attribut:

contentEditable=false

Résultat dans le comportement souhaité.

Autres conseils

Si vous essayez d'appliquer un comportement en lecture seule à un contrôle d'entrée utilisateur, vous pouvez utiliser l'attribut @readonly de ce contrôle. Sinon, vous pouvez également ajouter des écouteurs d’événement pour les événements d’interface utilisateur appropriés (keydown, mousedown) et empêcher leur comportement par défaut (return false ou event.returnValue = false). En ce qui concerne l'envoi d'événements personnalisés, vous pouvez en effet le faire. Utilisez le nom d'événement connu d'Internet Explorer. Un autre indice pourrait être: enregistrez un gestionnaire d’événements onchange et rétablissez la valeur du contrôle sur la valeur de defaultValue (propriété de tous les contrôles d’entrée).

J'espère que certaines idées vous aideront.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top