Laden...

zugriff auf textbox in click event

Erstellt von voidmatters vor 17 Jahren Letzter Beitrag vor 16 Jahren 2.531 Views
V
voidmatters Themenstarter:in
2 Beiträge seit 2007
vor 17 Jahren
zugriff auf textbox in click event

Wahrscheinlich werdet ihr mich gleich an irgendwelche Grundkurse verweisen...
Ich habe ein so simples Problem, dass es mich tierisch nervt es nicht herauszufinden:

Angenommen ich habe mehrere Textboxen in einer Form in der C# Express Edition.
Nun dachte ich kann ich allen Textboxen ein Click Event geben,
mit welchem man z.B. den Text in der Textbox markiert, sowas wie:


private void FocusText(object sender, EventArgs e)
        {
            sender.SelectAll();
        }

Kann mir jemand verraten, wie ich mein Programm aufschlaue,
dass mir der Compiler kein...

'object' does not contain a definition for 'SelectAll'

ausspuckt?

D
462 Beiträge seit 2005
vor 17 Jahren

Du musst dem Compiler schon sagen, dass 'object sender' eine TextBox ist:

private void FocusText(object sender, EventArgs e)
{
     TextBox textBox = (TextBox)sender;            
     textBox.SelectAll();
}

mfg

B
1.529 Beiträge seit 2006
vor 17 Jahren

Nutze statt eines Casts den AS-Operator. Dieser generiert keine Exception bei einem unerlaubten Casts, sondern liefert NULL.

private void FocusText(object sender, EventArgs e)
{
   TextBox textBox = sender as TextBox;
   if (textBox == null)
      return;
   textBox.SelectAll();
}
V
voidmatters Themenstarter:in
2 Beiträge seit 2007
vor 17 Jahren

Also der Ausdruck mit dem AS Operator liest sich auch für meinen Anfänger-Geschmack besser als der vorige.

Das heißt, wenn ich 'sender' in der Laufzeit noch nicht mit einer konkreten Objektvariable verbunden habe, kann ich eigentlich nur mit getType herausfinden, was es ist, sonst aber nicht auf seine Eigenschaften zugreifen, richtig?!?

J
9 Beiträge seit 2007
vor 16 Jahren

Hallo ich möchte ebenfalls mit einem click event auf eine text box eine Methode aufrufen. Jetzt ist es aber so das ich nur den Inhalt der textbox im object sender stehen habe. Ich bräuchte aber auch den Textboxnamen.

Wie kann ich dies nun realisieren?

Gruß JHK

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo jhk,

((TextBox)sender).Name

Auf sowas musst du aber bitte lernen selber zu kommen, so naheliegend, wie das ist.

Warum willst du denn den Namen haben? Klingt nach einer eher schlechten Idee, die du im Sinn hast.

herbivore

J
9 Beiträge seit 2007
vor 16 Jahren

Ja hast ja recht herbivore!!!!!! Aber sitze wahrscheinlich zu nah vorm Rechner und hatte ein Brett vorm Kopf 🤔

Also ich arbeite grade an einer Visualisierung einer Steuerung die halt über OPC kommuniziert. Das ganz soll so modular sein das nur auf den Formen welche die Prozessbilder enthalten sollen Modifikationen vorgenommen werden sollen. Ist ja auch logisch.

Somit habe ich für ein Clickevent auf einer TextBox halt ne Methode welche dann für alle gelten soll bzw. wenn es ne möglich keit gibt dies noch nicht mal obhängig davon ist ob es ne tesxtbox ist oder etwas anderes.

jetzt zum eigentlich Teil:

Um jetzt natürlich ein OPC Item zu ändern muss ich ja wissen wie es heißt daher meine Idee die textboxen wie die Entsprechenden OPC Items zu benennen.

Hört sich wahrscheinlich kompliziert an ist es wahrscheinlich auch .....

Gruß JHK

P.S: Wenn ich schwachsinn schreibe einfach knallhart drauf hinweisen =)

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo jhk,

du solltest dir besser das zu der TextBox gehörige OPC-Item in TextBox.Tag merken. So kannst du ohne Umweg über den Namen zugreifen. Casten musst du natürlich auch hier.

herbivore

J
9 Beiträge seit 2007
vor 16 Jahren

Danke für den Tip!

Gib es denn eine Möglichkeit die Methode so zu programmieren, dass sie unabhängig von der Windowscontrols ist?

Gruß JHK

P.S.: Danke im voraus damit ist mir dann ersteinmal geholfen.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo jhk,

ja, wenn du nicht auf TextBox, sondern auf Control castest. Tag gibt es in allen Controls.

herbivore