Kann ein Teil eines Textes in einem Windows Form-Steuerelement markiert/ausgewählt werden? Ich weiß, dass es mit dem RTFtextbox-Steuerelement möglich ist. Die Verwendung dieses Steuerelements wäre jedoch übertrieben, da ich viele Instanzen des Labels erstellen muss.
Kann ich Text auf einem Windows-Formularetikett auswählen? - NEIN (Zumindest kein einfacher Weg, ohne die Label.Paint-Methode zu überschreiben)
Sie können ein TextBox für diesen Zweck leicht ändern.
TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
Glaube nicht Hier ist ein Beispiel für Sie.
Like Bala R antwortete:
Msgstr "Verwenden Sie ein TextBox mit BorderStyle, das auf None und Readonly auf true Und Backcolor gesetzt ist, um dem Container zu entsprechen.".
Wenn die Textzeichenfolge sehr lang ist und die Variable Width
der Variablen TextBox
nicht ausreicht, um den gesamten Text anzuzeigen, können Sie die Eigenschaft Width
der Variable TextBox
so einstellen, dass der gesamte Text angezeigt wird.
Wenn Sie die korrekte Nummer für Width
kennen müssen, können Sie hierfür die MeasureString
-Methode von Graphics
verwenden. Sie können die Instanz von der CreateGraphics()
-Methode der Control
(in diesem Fall TextBox
) erhalten.
Der erste Parameter ist der Text von TextBox und der zweite Parameter ist die Schriftart von TextBox. Diese Funktion gibt SizeF
struct zurück. Sie benötigen nur die Width-Eigenschaft, konvertieren Sie sie mit (int)size.Width
oder (int)Math.Round(size.Width)
in eine Ganzzahl.
Vergessen Sie nicht, die Dispose()
-Methode der Grafikinstanz danach aufzurufen, da Sie sie nicht mehr benötigen.
Sie können Ihre eigene Funktion schreiben, die all diesen Prozess erledigt:
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;
}
Nein, es ist nicht möglich, Text auf der Windows Form-Beschriftung auszuwählen. Sie können stattdessen ein schreibgeschütztes Textfeld dafür verwenden.
Verwenden Sie eine TextBox
mit BorderStyle
, die auf None
gesetzt ist, und Readonly
auf true
und auf Backcolor gesetzt ist, um der des Containers zu entsprechen.
Sie können einen Teil des Textes auf einem Etikett nicht markieren. Sie können jedoch ein Bild verwenden und es auf die Label.Image-Eigenschaft setzen, wenn der Text für diese Beschriftungen statisch ist.
Ich weiß, dass es sich bei dieser Frage um die Auswahl von Teilen des Texts eines Labels handelt, aber ich gehe davon aus, dass der Text letztendlich in der Zwischenablage platziert werden soll.
Wenn Sie also nichts dagegen haben, den gesamten Text zu kopieren, setzen Sie einfach ein Click
-Ereignis auf das Etikett, um dessen Text in die Zwischenablage zu kopieren:
myLabel.Click += new System.EventHandler(MyLabel_Click);
// ...
private void MyLabel_Click(object sender, EventArgs e)
{
Clipboard.SetText(myLabel.Text);
}
Ein Doppelklick auf ein Etikett kopiert den Text in die Zwischenablage. Dies ist jetzt das Standardverhalten von Windows Forms-Beschriftungen.