none
Wie erkennen ob Textbox ausgewählt wurde?

    Frage

  • Hallo,

    Zahl1TxtBox.Text = Zahl1TxtBox.Text + 0;
                if (Zahl2TxtBox == TextChange)
                {
                    Zahl2TxtBox.Text = Zahl2TxtBox.Text + 0;
                }


    Ich wollte ein Taschenrechner Programm entwickeln aber wie kann man kontrollieren ob die Textbox angeklickt wurde also Blau wurde wie es in Windows ist?

    Ich hatte mal das obere versucht aber da kam ein Fehler: 

    Error 1 'System.Windows.Controls.TextChange' is a 'type' but is used like a 'variable'

    Kann mir jemand helfen mir fällt nichts ein wie ich das machen soll

    Danke

    Sonntag, 22. Februar 2015 14:22

Antworten

Alle Antworten

  • Hallo Schuayb,

    ob die Textbox angeklickt wurde, sprich ob sie den Eingabefokus hat, bekommst Du über die Eigenschaft "Focused" heraus.

    Wenn Du jedoch darauf reagieren möchtest, wenn sich der darin enthaltene Wert geändert hat, könntest Du beispielsweise auf das Event "TextChanged" reagieren.

    Schöne Grüße,
    Thomas

    Sonntag, 22. Februar 2015 14:50
  • Hallo,
    du musst prüfen ob die TextBox den Fokus besitzt. Je nach Technologie gibt es dafür eine Focused oder IsFocus Eigenschaft. Ich vermute mal das du noch immer WPF verwendest - hier musst du IsFocused nutzen:

    if (tb.IsFocused)
    {

    Das überprüfen ob die TextBox den Fokus hat bringt dir nur meistens nicht sehr viel. Vielleicht willst du eher prüfen ob die Text-Eigenschaft einen Inhalt hat? (tb.Text == string.Empty bzw. string.IsNullOrEmpty(tb.Text) ?)

    Des weiteren, wenn du die TextBox Inhalte mit einander verrechnen willst, musst du erst eine Zahl aus den Strings machen:

    double a, b;
    if (!double.TryParse(tbA.Text, out a) || !double.TryParse(tbA.Text, out a))//Strings in Zahlen wandeln und gucken ob die Strings auch nur Zahlen enthalten
    {
        MessageBox.Show("Fehlerhafte Eingabe");
        return;//Methode verlassen
    }
    tbOutput.Text = (a + b).ToString();

    Das einfachse +0, wie du es in deinem Code hast, würde einfach die 0 als String hinten anhängen.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Sonntag, 22. Februar 2015 14:55
  • Hallo,

    Vielen Dank für die Antwort.

    Aber ich habe wie sie am Anfang gesagt haben gemacht aber das geht nicht.

    Ich glaube sie haben nicht verstanden was ich damit meinte mit den Fokus.

    Ich meinte das wenn dieses Rahmen von Textbox blau wird und dieser Strich zum schreiben kommt.

    Mein Code:

    private void Button_Click(object sender, RoutedEventArgs e)
            {
                if (Zahl2txtBox.IsFocused)
                {
                    Zahl2txtBox.Text = Zahl2txtBox.Text + 0;
                }
                Zahl1TxtBox.Text = Zahl1TxtBox.Text + 0;
                
            }

    Danke

    Sonntag, 22. Februar 2015 15:05
  • Wenn ein Steuerelement diesen blauen Rahmen hat, dann hat es den Fokus. Da du den Code jedoch in einem Button.Click-Eventhandler ausführst, hat immer der Button den Fokus.

    Du müsstest dir daher merken welchen Control den Fokus hat. GHierfür kannst du das GotFocus-Event von jeder TextBox abonnieren:

    <TextBox Name="tbA" GotFocus="tb_GotFocus"/>
    <TextBox Name="tbB" GotFocus="tb_GotFocus"/>
    Dann kannst du dir im Codebehind die fokussierte TextBox merken und dann immer auf diese zugreifen:
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        focusedTextBox.Text = focusedTextBox.Text + "0";//Wenn du wirklich eine Stringverknüpfung durchführen willst, dann benutze doch bitte auch Strings
    }
    
    TextBox focusedTextBox;
    private void tb_GotFocus(object sender, RoutedEventArgs e)
    {
        focusedTextBox = sender as TextBox;//sender ist immer das auslösende Control
    }


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Sonntag, 22. Februar 2015 15:18