Est-il possible de surligner/sélectionner une partie du texte dans un contrôle d'étiquette Windows Form? Je sais que c'est possible avec le contrôle RTFtextbox, mais que l'utilisation de ce contrôle serait excessif car je dois créer de nombreuses instances de l'étiquette.
Est-il possible de sélectionner du texte sur une étiquette de formulaire Windows? - NON (du moins, pas facile sans passer par la méthode Label.Paint)
Vous pouvez facilement modifier une zone de texte à cette fin.
TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
Ne crois pas? voici un exemple pour vous.
J'aime Bala R répondit:
"Utilisez une zone de texte avec BorderStyle défini sur Aucun et en lecture seule sur true Et Backcolor pour correspondre à celui du conteneur.".
Si la chaîne de texte est très longue et que la Width
de la TextBox
ne suffit pas pour afficher tout le texte, vous pouvez définir la propriété Width
de la TextBox
pour afficher tout le texte.
Si vous devez connaître le numéro correct pour Width
, vous pouvez utiliser la méthode MeasureString
de Graphics
pour cela. Vous pouvez obtenir l'instance de la méthode CreateGraphics()
de Control
(TextBox
dans ce cas).
Le premier paramètre est le texte de TextBox et le deuxième paramètre est la police de TextBox. Cette fonction retourne SizeF
struct. Vous n'avez besoin que de la propriété Width, convertissez-le en entier avec (int)size.Width
ou (int)Math.Round(size.Width)
.
N'oubliez pas d'appeler la méthode Dispose()
de l'instance graphique après, car vous n'en aurez plus besoin.
Vous pouvez écrire votre propre fonction qui fera tout ce processus:
static void SetText(TextBox textBox, string str)
{
Graphics graphics = textBox.CreateGraphics();
SizeF size = graphics.MeasureString(str, textBox.Font);
graphics.Dispose();
textBox.Width = (int)Math.Round(size.Width);
textBox.Text = str;
}
Non, il n'est pas possible de sélectionner du texte sur l'étiquette de formulaire Windows. Vous pouvez utiliser à la place une zone de texte en lecture seule pour cela.
Utilisez une variable TextBox
avec BorderStyle
défini sur None
et Readonly
défini sur true
et avec Backcolor correspondant à celui du conteneur.
Vous ne pourrez pas surligner une partie du texte sur une étiquette. Toutefois, vous pouvez utiliser une image et la définir sur la propriété Label.Image si le texte de ces étiquettes est statique.
Je sais que cette question concerne la sélection de parties du texte d'une étiquette, mais je suppose que le texte doit finalement être placé dans le presse-papiers.
Donc, si cela ne vous dérange pas de copier le texte en entier, définissez un événement Click
sur l'étiquette pour copier son texte dans le Presse-papiers:
myLabel.Click += new System.EventHandler(MyLabel_Click);
// ...
private void MyLabel_Click(object sender, EventArgs e)
{
Clipboard.SetText(myLabel.Text);
}
Double-cliquez sur une étiquette pour copier le texte dans le presse-papiers. C'est maintenant le comportement par défaut des étiquettes Windows Forms.