加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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事件将在那之后发挥作用.希望能帮助到你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读