Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to move focus in WPF?

Tags:

c#

focus

wpf

I wonder if there is anyway to change focus from the current control and move it to other control in WPF on TabIndex assigned controls.

Example I have controls with TabIndex 1 to 5, is there a way to jumb the focus from 1 to 5 ?

<TextBox TabIndex="1" Focusable = "true" LostFocus="test_LostFocus"/>
<TextBox TabIndex="2" Focusable = "true"/>
...
<TextBox TabIndex="5" Focusable = "true" name="LastControl"/>

.

private void test_LostFocus(object sender, RoutedEventArgs e)
{
  LastControl.Focus();
}

I tried Keyboard.Focus() and FocusManager.SetFocusedElement() but no luck.

Any idea?

like image 739
Smith Avatar asked Jan 19 '26 09:01

Smith


1 Answers

As stated in the comments, KeyDown is a better way to go (lostfocus will cause weird behaviors such as the user specifically clicking on the second control and the focus goes to the last one instead)...

Make sure you set the e.Handled to true though..!

This will work:

private void TextBox1_KeyDown(object sender, KeyEventArgs e)
{
        if (e.Key == Key.Tab)
        {
            e.Handled = true;
            LastControl.Focus();
        }
 }

Where the deceleration of the textbox should be something like this:

<TextBox TabIndex="1" Focusable = "true" KeyDown="TextBox1_KeyDown"/>
like image 88
Blachshma Avatar answered Jan 21 '26 22:01

Blachshma