7
votes

Meilleure façon d'afficher un texte en lecture seule dans C #

Affichage du texte dans une zone de texte qui a une propriété activé défini sur FALSE ou lecture seule sur VRAI produit noir sur le texte gris, ce qui n'est pas très agréable de lire du tout.

Quel est le moyen le plus simple d'afficher uniquement le texte en lecture seule sur les formulaires Windows?


1 commentaires

3 Réponses :


7
votes

Impossible de remplacer les propriétés de prévision et de backcolor quand elle est verrouillée?

omis de cela, créez votre propre classe de Textbox qui écoute l'événement Keyup et intercepte la touche Appuyez sur si la propriété Readonly (ou verrouillée) est définie sur TRUE (empêchant l'addition du texte.) Ensuite, vous pouvez utiliser des styles.). Vous aimez.


3 commentaires

Je viens d'essayer cela, et oui, après avoir défini la propriété Radionly sur true, vous pouvez en effet régler le backcolor en blanc.


J'ai vu cela posté quelque part comme une solution à ce problème même, et cela travaille principalement pour moi, mais pour une raison quelconque, j'ai eu un problème avec cela dans la pratique. Peut-être faire avec accessibilité? Si je me souviens, je me suis mis à jour avec pourquoi je ne suis pas allé cette route (si cela fonctionne pour vous, c'est bien que je suppose :-).


Vous ne devriez pas définir les couleurs en noir et blanc. Au lieu de cela, définissez-les sur Backcolor = SystemColors.Window et Prévisor = SystemColors.Controltext



0
votes

ummm ... Utilisez une étiquette? Pourquoi voulez-vous utiliser une zone de texte et le faire avoir l'air éditable quand ce n'est pas? Voulez-vous que les utilisateurs deviennent confus? Violer les idiomes de style d'interface utilisateur coutumier à votre propre péril.


2 commentaires

Je veux afficher beaucoup de texte, qui est récupéré / généré d'ailleurs. Et je veux l'afficher d'une manière lisible (comme le texte, par exemple, sur ce site Web). Et je le veux avec des barres de défilement, car quand cela passe sur une page.


L'utilisation d'une zone de texte permet à l'utilisateur de sélectionner le texte de copie. La convention dicte que le texte noir sur un arrière-plan gris est réadon, mais ce n'est pas un peu rare pour les zones de texte standard (texte noir sur fond blanc) pour également être réadapté.



0
votes

Ceci semble vraiment horrible de faire sous Windows, en fonction du degré de souhaiter que vous souhaitiez aller (par exemple, si vous souhaitez que le texte soit sélectionnable ou non, si vous souhaitez pouvoir effectuer le formatage du texte).

J'ai découvert cela il y a quelque temps mais j'ai changé pour trouver l'horreur était raisonnablement bien documentée sur divers blogs. Il semble que vous puissiez utiliser une richtextbox, mais créer des gestionnaires d'événements pour empêcher les utilisateurs finaux de modifier son contenu. P>

E.g. Richtextbox appelé "myrichTextBox" alors vous voudriez ajouter les éléments suivants à la conception.cs pour le formulaire: p> xxx pré>

et puis vous voudriez créer des méthodes telles que ci-dessous Forme: P>

public void MyRichTextBox_Deselect(object sender, EventArgs e)
{
    // When user tries to select text in the rich text box, 
    // set selection to nothing and set focus somewhere else.
    RichTextBox richTextBox = sender as RichTextBox;
    richTextBox.SelectionLength = 0;
    richTextBox.SelectionStart = richTextBox.Text.Length;
    // In this case I use an instance of separator bar on the form to switch focus to.
    // You could equally set focus to some other element, but take care not to
    // impede accessibility or visibly highlight something like a label inadvertently.
    // It seems like there should be a way to drop focus, perhaps to the Window, but
    // haven't found a better approach. Feedback very welcome.
    mySeperatorBar.Focus();
}

public void MyRichTextBox_LinkClicked(object sender, LinkClickedEventArgs e)
{
    System.Diagnostics.Process.Start(e.LinkText);
}


0 commentaires