1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

C# Bei Betätigung des Enter - Taste wird Null ausgegeben

Dieses Thema im Forum ".NET WPF & Silverlight" wurde erstellt von Aydogan61, 16. Dezember 2013.

  1. Aydogan61

    Aydogan61 Grünschnabel

    Ich glaube es ist ein Kleinigkeit aber seit 2 Tagen finde ich den Fehler nicht. Wenn ich die Enter - Taste betätige soll der Programm die Rechnung durchführen und die Ergebnis anzeigen aber es wird immer ein Null angezeigt, wenn ich aber den Button betätige rechnet er mir alles korrekt vor. Wieso funktioniert das mit dem Enter - Taste nicht. Könnt ihr mir bitte dabei helfen wo die Helfer ist.

    Vielen Dank.

    Software VS 2012

    Code (Text):
    1.         public void Calculation_Click(object sender, RoutedEventArgs e)
    2.         {
    3.             SetKFactor();
    4.             SetUSKFactor();
    5.  
    6.             if (Flow_B > Freq_B)
    7.                 SetFrequenz();
    8.  
    9.             if (Freq_B > Flow_B)
    10.                 SetDurchfluss();
    11.         }
    12.                    
    13.         public void Enter_Frequenz(object sender, KeyEventArgs e)
    14.         {
    15.             if (e.Key == Key.Return)
    16.             {
    17.                 SetDurchfluss();
    18.                 SetKFactor();
    19.                 SetUSKFactor();
    20.             }
    21.         }
    22.        
    23.         public void Enter_Flow(object sender, KeyEventArgs e)
    24.         {
    25.             if (e.Key == Key.Return)
    26.             {
    27.                 SetFrequenz();
    28.                 SetKFactor();
    29.                 SetUSKFactor();
    30.             }
    31.         }
    HTML:
    1. <Button x:Name="Calculation" Content="Calculation" Click="Calculation_Click" HorizontalAlignment="Left" Margin="422,305,0,0" VerticalAlignment="Top" Width="250" IsCancel="True" FontWeight="Bold" FontSize="36" Height="76" FontFamily="Arial"/>
    2.  
    3.         <TextBlock x:Name="Prog__Name" Margin="50,697,512,40" TextWrapping="Wrap" Text="{Binding VSDER}" FontFamily="Times New Roman" FontStyle="Italic" FontWeight="Bold" FontSize="72" Width="480" Foreground="#FFF7F7F7" HorizontalAlignment="Left" VerticalAlignment="Bottom"/>
    4.  
    5.         <TextBox Name="Fluss" PreviewKeyDown="Enter_Flow" PreviewMouseLeftButtonDown="Mausklick_Flow"  MouseLeftButtonUp="Mausklick_Flow" HorizontalAlignment="Left" Height="30" Margin="150,305,0,0" Text="{Binding Durchfluss}" VerticalAlignment="Top" Width="100" FlowDirection="RightToLeft" FontSize="16" TabIndex="0" Cursor="Pen" FontFamily="Arial" VerticalContentAlignment="Center"/>
    6.  
    7.         <TextBox Name="Herz" KeyDown="Enter_Frequenz" PreviewMouseLeftButtonDown="Mausklick_Frequenz" MouseLeftButtonUp="Mausklick_Frequenz" HorizontalAlignment="Left" Height="30" Margin="150,351,0,0" Text="{Binding Frequenz}" VerticalAlignment="Top" Width="100" FlowDirection="RightToLeft" FontSize="16" TabIndex="0" Cursor="Pen" FontFamily="Arial" VerticalContentAlignment="Center"/>
     
  2. Cromon

    Cromon Premium-User

    Hallo Aydogan61

    Ich weiss nicht was deine Methoden machen, aber beim Click machst du:
    SetKFactor <- 1
    SetUSFactor <- 2
    SetFrequenz oder SetDurchfluss <- 3

    Bei den anderen machst du:
    SetDurchfluss oder SetFrequenz <- 3
    SetKFactor <- 1
    SetUSFactor <-2

    Du hast also eine andere Reihenfolge, macht das einen Unterschied?

    Viele Grüsse
    Cromon
     
  3. Aydogan61

    Aydogan61 Grünschnabel

    Nein es macht kein unterschied, mein Fehler konnte ich bisschen eingrenzen mit dem Debugger. Wenn ich ein Wert in den TextBox eingebe nimmt er ihn nicht sofort war. Erst wenn ich den Button betätige. Mit dem Enter-Taste nimmt er den überhaupt nicht war, deswegen gibt er mir immer ein Null aus. Wie kann ich das so machen, dass er während der eintippen die Wert wahr nimmt oder das der Enter-Taste genau wie Button funktioniert.

    Problem gelöst.

    Das Problem war, der Focus. Wenn ich mit dem Maus auf dem TextBox geklickt habe, ist ja der Focus automatisch da, und wenn ich mit dem Enter - Taste betätige während der Focus in der TextBox ist, wird das als ein Mausklick wahrgenommen und die Werte auf null gesetzt. Man muss den Focus nach dem Wert Eingabe aus dem TextBox rausholen. Erst dann arbeitet der Enter-Taste korrekt.

    Hat mein drei Tage gekostet aber endlich ist es hinter mir. :)

    Vielen Dank für eure Hilfen.

    MfG

    Aydogan61
     
    Zuletzt bearbeitet: 19. Dezember 2013
  4. ksk

    ksk Erfahrenes Mitglied

    Ich glaub eher das dein Problem daran liegt das du nur auf die Return-Taste prüfst und nicht auch auf die Enter-Taste.
    Probier mal
    Code (Text):
    1.             if (e.Key == Key.Return || e.Key == Key.Enter)
    2.             {
    3.                 SetFrequenz();
    4.                 SetKFactor();
    5.                 SetUSKFactor();
    6.             }
    Somit sollte die Bedingung in beiden fällen zutreffen.

    Das stimmt nicht so ganz. Wenn der Focus nicht mehr auf dem TextBox liegt, dann kann auch kein KeyDown-Event ausgelöst werden.
    Halt mich am laufenden fals ich falsch liege.


    Lg
    ksk
     
    Zuletzt bearbeitet: 14. Juli 2014
  5. raruk

    raruk Grünschnabel

    Wenn du den Focus nicht immer umstellen willst, kannst du ganz einfach ein neues Event(KeyDown) für die Textbox erstellen.
     
Die Seite wird geladen...