Entwickler-Ecke

WinForms - Label bei Klick markieren und Text-Eigenschaft überschreiben


chris300695 - So 11.12.11 17:04
Titel: Label bei Klick markieren und Text-Eigenschaft überschreiben
Hey Leute,

brauche mal wieder eure Hilfe.

Ich will bei Klick auf ein Label, dass der Text markiert wird und ich ihn überschreiben kann. Habe dazu im Web leider nichts gefunden,
ich hoffe dass ihr mir da heflfen könnt.


Gruß

Chris


Th69 - So 11.12.11 19:59

Hallo Chris,

meinst du wirklich ein Label oder aber eine TextBox?


chris300695 - So 11.12.11 20:26

ja, ich meine schon ein Label, bei einer Textbox wäre es ja kein Problem.

Geht das mit einem Label überhaupt?


Th69 - So 11.12.11 20:35

Nein, von sich aus nicht. Du müßtest dann eine TextBox (temporär) darüberlegen und anschließend (z.B. bei Return/Enter) wieder löschen (bzw. verstecken) und den Text für das Label übernehmen.


C# - So 11.12.11 22:46

ja das wäre die beste Lösung dafür.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
private void Label1_Click(object sender, EventArgs e)
{
 TextBox textBox = new TextBox{Text = Label1.Text, Location = Label1.Location};
 Label1.Visible = false;
 textBox.SelectAll();
 textBox.Visible = true;
 textBox.KeyDown += TextBox1_KeyDown;
}

private void TexBox1_KeyDown(object sender, KeyEventArgs e)
{
 //Hier die ganze Prozedur umkehren...
}

sowas in der Art


Yogu - So 11.12.11 23:49

Du könntest auch statt den Labels TextBox-Controls nehmen, die du dann wie Labels aussehen lässt:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
    private void textBox1_Enter(object sender, EventArgs e) {
      textBox1.BorderStyle = BorderStyle.Fixed3D;
      textBox1.BackColor = SystemColors.Window;
      textBox1.SelectAll();
      textBox1.Cursor = Cursors.IBeam;
    }

    private void textBox1_Leave(object sender, EventArgs e) {
      textBox1.BorderStyle = BorderStyle.None;
      textBox1.BackColor = SystemColors.Control;
      textBox1.Select(00);
      textBox1.Cursor = Cursors.Arrow;
    }

    private void textBox1_KeyDown(object sender, KeyEventArgs e) {
      if (e.KeyCode == Keys.Enter) {
        textBox1_Leave(nullnull);
        button1.Focus();
      }
    }

Bei Programmstart muss textBox1_Leave aufgerufen werden, um das Control wie ein Label aussehen zu lassen.


mo0n_ - Mi 25.01.12 17:30

nichtmal danke sagt er :-/