2008-10-06 4 views
0

J'écris un contrôle de formulaires .NET pour éditer le HTML en utilisant MSHTML. Je crée des éléments personnalisés et je veux les rendre effectivement en lecture seule. J'ai pensé que je pourrais aller à ce sujet en me concentrant sur l'élément entier chaque fois que l'élément est inséré dans cet élément, mais HtmlElement.Focus() ne sélectionne pas l'élément entier et je ne parviens pas à saisir 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 l'espère) mais je ne peux pas déclencher cet événement non plus. Des idées sur les raisons pour lesquelles mes attentes concernant le comportement de l'événement sont erronées ou d'autres suggestions pour la mise en œuvre?Rendre l'élément DOM efficace en lecture seule

Répondre

1

Je trouve que la définition de l'attribut:

contentEditable=false 

dans le comportement Résulté désiré.

0

Si vous tentez d'appliquer un comportement en lecture seule à un contrôle d'entrée utilisateur, vous pouvez essayer d'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 la répartition des événements personnalisés, vous pouvez en effet le faire. Utilisez le nom d'événement connu d'IE. Et un autre indice pourrait être: enregistrer un gestionnaire d'événement onchange et rétablir la valeur du contrôle à la valeur de defaultValue (propriété de tout contrôle d'entrée).

Espérons que certaines idées vous aideront.

Questions connexes