2010-09-27 6 views

Répondre

5

Empêcher un contrôle focalisable de prendre la mise au point prend un certain nombre de contre-mesures. Vous devrez inclure un contrôle qui -t prendre le focus de cette classe à résister à toutes les tentatives:

using System; 
using System.Windows.Forms; 

class RichLabel : RichTextBox { 
    public RichLabel() { 
     this.ReadOnly = true; 
     this.TabStop = false; 
     this.SetStyle(ControlStyles.Selectable, false); 
    } 
    protected override void OnEnter(EventArgs e) { 
     if (!DesignMode) this.Parent.SelectNextControl(this, true, true, true, true); 
     base.OnEnter(e); 
    } 
    protected override void WndProc(ref Message m) { 
     if (m.Msg < 0x201 || m.Msg > 0x20e) 
      base.WndProc(ref m); 
    } 
} 
0

Le style désactivé fait partie du comportement standard de Windows. Si vous voulez changer le style, vous devrez dessiner le contrôle vous-même, ce qui signifie que vous devrez gérer la méthode Paint, et devrez peut-être surcharger OnPaint.

Voir Overriding the OnPaint Method et Custom Control Painting and Rendering.

+0

Avez-vous des suggestions pour la désactivation d'un RichTextBox? J'utilise un pour ses fonctionnalités d'auto-dimensionnement, mais je ne veux pas que les utilisateurs puissent manipuler les données contenues. Existe-t-il un meilleur moyen de désactiver le RichTextBox, mais le faire ressembler à une étiquette régulière? (peut-être ajouter un événement?) – sooprise

+1

Si vous ne voulez pas que les utilisateurs modifient le jeu de texte 'myRichTextBox.IsReadOnly = true;' –

+0

Minuscule correction: myRichTextBox.ReadOnly = true; En outre, je peux toujours cliquer à l'intérieur de la boîte et lire le texte. Y at-il un moyen de rendre impossible de cliquer même dans (sans désactiver). Merci cependant, cela a aidé, et c'est un pas dans la bonne direction. – sooprise

Questions connexes