Domanda È possibile selezionare il testo sull'etichetta di un modulo di Windows?


È possibile evidenziare / selezionare parte del testo in un controllo etichetta Windows Form? So che è possibile con il controllo RTFtextbox ma che l'utilizzo di tale controllo sarebbe eccessivo dato che ho bisogno di creare molte istanze dell'etichetta.


44
2017-10-13 00:31


origine


risposte:


È possibile selezionare il testo sull'etichetta di un modulo di Windows? - NO (Almeno nessun modo semplice senza sovrascrivere il metodo Label.Paint)

È possibile modificare facilmente un TextBox per questo scopo.

TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;

Non crederci? ecco un esempio per te.

enter image description here


73
2017-10-13 01:40



Piace Bala R ha risposto:

"Usa un TextBox con BorderStyle impostato su None e Readonly su true   e Backcolor per abbinare quello del contenitore. ".

Se la stringa di testo è molto lunga e il Width del TextBox non è sufficiente per visualizzare tutto il testo, quindi è possibile impostare il Width proprietà del TextBox per visualizzare tutto è testo.

Se è necessario conoscere il numero corretto per Width, quindi puoi usare il MeasureString metodo di Graphics per questo. È possibile ottenere l'istanza da CreateGraphics() metodo del Control (TextBox in questo caso).

Il primo parametro è TextBox Text e il secondo parametro è Font di TextBox. Questa funzione ritorna SizeF struct. Hai bisogno solo della proprietà Width di esso, convertirlo in numero intero con (int)size.Width o (int)Math.Round(size.Width).

Non dimenticare di chiamare il Dispose() metodo dell'istanza grafica dopo, perché non ne avrai più bisogno.


Puoi scrivere la tua funzione che farà tutto questo processo:

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;
}

11
2017-08-27 16:29



No, non è possibile selezionare il testo sull'etichetta di Windows Form. Puoi invece usare una casella di testo di sola lettura per questo.


7
2017-10-13 00:40



Usare un TextBox con BorderStyle impostato None e Readonly impostato true e Backcolor per abbinare quello del contenitore.


5
2017-10-13 00:42



Non sarai in grado di evidenziare parte del testo su un'etichetta. Tuttavia, è possibile utilizzare un'immagine e impostarla sulla proprietà Label.Image se il testo di queste etichette è statico.


3
2017-10-13 01:03