4

TextBlock 有 KeyDown 和 KeyUp 事件,但它从未被触发。有没有办法让它发生?我只需要检测是否按下了任何键。

4

1 回答 1

5

首先,您需要将FocusableTextBlock 的属性设置为 True,这将允许您使用 Tab 键选择项目,但不能单击以选择它,但如果您处理 MouseDown 事件,您可以手动将焦点设置为您的 TextBlock。

主窗口.xaml

<Window x:Class="WpfApplication1.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">
    <Grid >
       <TextBlock Name="tb1"  Height="30" Width ="100" IsEnabled="True"  Focusable="True" KeyDown="tb1_KeyDown" MouseDown="tb1_MouseDown">Hello World</TextBlock>
    </Grid>
</Window>

主窗口.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void tb1_KeyDown(object sender, KeyEventArgs e)
    {
        tb1.Background = Brushes.Blue;
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        tb1.Focus();
    }

    private void tb1_MouseDown(object sender, MouseButtonEventArgs e)
    {
        tb1.Focus();
    }
}
于 2012-11-27T04:49:29.687 回答