c# – KeyDown事件没有从网格中提升
发布时间:2020-12-15 04:05:55 所属栏目:百科 来源:网络整理
导读:这里我有一个带网格的示例窗口.我需要在按下按键时捕获事件.但是当我点击网格区域然后按键时它不会升起.它只有在Textbox聚焦时才有效.我知道如果我从Window捕获它会有效.但我有其他应用程序,几乎没有用户控件,我需要从不同的用户控件捕获它.我尝试为Window设
这里我有一个带网格的示例窗口.我需要在按下按键时捕获事件.但是当我点击网格区域然后按键时它不会升起.它只有在Textbox聚焦时才有效.我知道如果我从Window捕获它会有效.但我有其他应用程序,几乎没有用户控件,我需要从不同的用户控件捕获它.我尝试为Window设置Focusable.false,为Grid设置为true,但它没有帮助.
有解决方案吗 <Window x:Class="Beta.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" Closed="Window_Closed_1" Focusable="False"> <Grid KeyDown="Grid_KeyDown_1" Focusable="True"> <TextBox x:Name="tbCount" HorizontalAlignment="Left" Height="35" Margin="310,49,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="83"/> </Grid> 解决方法
这很奇怪.这显然是一个焦点问题,我仍然无法理解为什么网格不采取焦点,即使我们点击它.
虽然有一种解决方法:为网格的已加载事件创建处理程序: <Grid x:Name="theGrid" KeyDown="Grid_KeyDown_1" Focusable="True" Loaded="TheGrid_OnLoaded"> 然后强制关注你的代码: private void TheGrid_OnLoaded(object sender,RoutedEventArgs e) { theGrid.Focus(); } 你的keydown事件将在那之后发挥作用.希望能帮助到你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |