我想在AutocompleteBox按下 CTRL+N 鍵時聚焦。我嘗試了一些代碼,但對我不起作用。在UserControl控制中,我使用PreviewKeyDown了如下事件,注意:只有在MessageBox.Show("some");如下關(guān)鍵事件之前寫入時,我才會使用以下代碼獲得焦點,private void UserControl_PreviewKeyDown(object sender, KeyEventArgs e) {if (e.Key == Key.N && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) {MessageBox.Show("sfsd"); Keyboard.Focus(SearchTextBox); SearchTextBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); e.Handled = true; }用戶控件: <UserControl x:Class="Inventory_Control.UserControls.SaleTab" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Inventory_Control.UserControls" xmlns:staticData="clr-namespace:Inventory_Control.UserControls" mc:Ignorable="d" xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" d:DesignHeight="450" d:DesignWidth="800" Loaded="UserControl_Loaded_1" PreviewKeyDown="UserControl_PreviewKeyDown" >上面的代碼對我不起作用。請幫忙
1 回答

HUH函數(shù)
TA貢獻(xiàn)1836條經(jīng)驗 獲得超4個贊
您可以嘗試使用DispatcherPriority低于以下值的調(diào)度程序Normal:
private void UserControl_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.N && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
Keyboard.Focus(SearchTextBox);
SearchTextBox.Dispatcher.BeginInvoke(new Action(() =>
{
SearchTextBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}), System.Windows.Threading.DispatcherPriority.Background);
e.Handled = true;
}
}
- 1 回答
- 0 關(guān)注
- 212 瀏覽
添加回答
舉報
0/150
提交
取消