Laden...

WPF: Im Keydown-Ereignis Umschalt + Tabtaste abfragen

Erstellt von marlem vor 5 Jahren Letzter Beitrag vor 5 Jahren 962 Views
M
marlem Themenstarter:in
68 Beiträge seit 2018
vor 5 Jahren
WPF: Im Keydown-Ereignis Umschalt + Tabtaste abfragen

Hallo,

folgender Code:


 private void ChkBarrierefrei_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Tab)
            {
                if (ChkBarrierefrei.IsChecked.Value == true)
                {
                        TBXEditor.Background = AKTIVES_ELEMENT_CONTRAST;
                        TBXEditor.BorderBrush = Brushes.Blue;
                        TBXEditor.BorderThickness = new Thickness(5);
                        TBXEditor.Focus();
                   
                }
            }
        }

Wenn der User Umschalt+Tab gedrückt habe, soll alles was mit TBXEditor zu tun hat, NICHT ausgeführt werden.

Wie geht das?

barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java

4.942 Beiträge seit 2008
vor 5 Jahren

Schau dir mal die Eigenschaften und Methoden von der Klasse Keyboard an, z.B. Modifiers:


bool shift = Keyboard.Modifiers.HasFlag(ModifierKeys.Shift);

if (e.Key == Key.Tab && !shift)

Ansonsten s.a. How to detect modifier key states in WPF?

M
marlem Themenstarter:in
68 Beiträge seit 2018
vor 5 Jahren

Vielen Dank Th69!

Leider klappt meine Idee nicht:


 private void ChkBarrierefrei_KeyDown(object sender, KeyEventArgs e)
        {
            bool shift = Keyboard.Modifiers.HasFlag(ModifierKeys.Shift);
            if (e.Key == Key.Tab)
            {
                if (ChkBarrierefrei.IsChecked.Value == true)
                {
                        TBXEditor.Background = AKTIVES_ELEMENT_CONTRAST;
                        TBXEditor.BorderBrush = Brushes.Blue;
                        TBXEditor.BorderThickness = new Thickness(5);
                        TBXEditor.Focus();   
                }
            } else

           if (e.Key == Key.Tab && !shift)
            {
                if (ChkBarrierefrei.IsChecked.Value == true)
                {
                    edtErsetzen.Background = AKTIVES_ELEMENT_CONTRAST;
                    TBXEditor.Background = NICHTAKTIVES_ELEMENT_CONTRAST;
                    TBXEditor.BorderThickness = new Thickness(0);

                }
            }
        }

Wenn die Checkbox ChkBarrierefrei aktiv ist und der Anwender drückt die Tabtaste dann bekommt die Textbox TBXEditor die Hintergrundfarbe Gelb und einen dicken Rand:


TBXEditor.Background = AKTIVES_ELEMENT_CONTRAST;
TBXEditor.BorderBrush = Brushes.Blue;
TBXEditor.BorderThickness = new Thickness(5);
TBXEditor.Focus(); 

Wenn die Checkbox ChkBarrierefrei aktiv ist und der Anwender drückt die Tabtaste und Umschalt-Taste dann darf die Textbox TBXEditor keinen dicken Rand und keine Hintergrundfarbe Gelb haben.

Der Grund warum diese Problematik auftritt ist wahrscheinlich, weil ich diese Ereignisse allgemein geschrieben habe:


 private void TextBox_GotFocus(Object sender, EventArgs e)
        {
            if (ChkBarrierefrei.IsChecked.Value == true)
            (sender as TextBox).Background = AKTIVES_ELEMENT_CONTRAST;
           
        }

        private void TextBox_LostFocus(Object sender, RoutedEventArgs e)
        {       if (ChkBarrierefrei.IsChecked.Value == true)
                (sender as TextBox).Background = NICHTAKTIVES_ELEMENT_CONTRAST;
        }


 <TextBox Name="edtErsetzen" BorderThickness="1" BorderBrush="Black" Width="150" ToolTip="Bitte Begriff eingeben, durch den der Suchbegriff ersetzt werden soll. Ersetzen Starten mit der Enter-Taste" KeyDown="edtErsetzen_KeyPress" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus" TabIndex="4"/>
                    <Grid>
                        <CheckBox Name="ChkBarrierefrei" BorderThickness="1" Content="Editor ba_rrierefrei"   Margin="8" Click="ChkBarrierefrei_CheckedChanged" TabIndex="5" KeyDown="ChkBarrierefrei_KeyDown"/>
                    </Grid>
                </ToolBar>

Hat jemand eine Idee was ich tun muss, damit wenn die Checkbox aktiv ist und der Anwender drückt Umschalt-Tab nur die Hintergrundfarbe der Textbox edtErsetzen gelb wird?

barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java

M
marlem Themenstarter:in
68 Beiträge seit 2018
vor 5 Jahren

das Thema ist beendet. Ich habe ein anderes Problem.
Habe gerade gedebuggt. ich eröffne einen neuen Thread!

barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java