c# – KeyDown事件没有从网格中提升

前端之家收集整理的这篇文章主要介绍了c# – KeyDown事件没有从网格中提升前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这里我有一个带网格的示例窗口.我需要在按下按键时捕获事件.但是当我点击网格区域然后按键时它不会升起.它只有在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事件将在那之后发挥作用.希望能帮助到你.

原文链接:https://www.f2er.com/csharp/92767.html

猜你在找的C#相关文章