按下左/右键时防止焦点改变

时间:2014-04-02 03:14:15

标签: c# wpf focus

我想阻止我的程序在按下左/右键时更改聚焦元素,因为当按下它们时我需要发生其他事情。现在,当单击某个按钮加载所有内容后按下按键时,焦点会设置为该按钮旁边的组合框,这会阻止按键执行任何操作,而是更改组合框的选定索引。

我在窗口按下某个键时有这段代码:

    private void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (!PostTypeComboBox.IsFocused && !PredefinedSubsComboBox.IsFocused && !SortComboBox.IsFocused)
        {
            switch (e.Key)
            {
                case System.Windows.Input.Key.Left:
                    e.Handled = false;
                    ViewModel.GoToPreviousPost();
                    PreviousImageButton.Focus();
                    break;

                case System.Windows.Input.Key.Right:
                    e.Handled = false;
                    ViewModel.GoToNextPost();
                    NextImageButton.Focus();
                    break;

                default:
                    break;
            }
        }
    }

我在switch语句中尝试使用和不使用以下行:

    e.handled = False;
    PreviousImageButton.Focus();
    NextImageButton.Focus();

但是我所做的一切似乎都没有阻止焦点改变,而_ImageButton.Focus()不会改变焦点,它仍然会返回组合框。

1 个答案:

答案 0 :(得分:0)

也许在做

e.Handled = true;

就够了