【问题标题】:Set TextBox AccessText without an accompanying Label设置没有附带标签的 TextBox AccessText
【发布时间】:2016-05-09 14:45:26
【问题描述】:

我在用户控件中有一系列没有附带标签的文本框。 我需要为用户提供一种方法来按 Alt+(Some Key) 将焦点设置到每个文本框。

如果我想使用内置的 WPF “AccessText” 方式来执行此操作,我需要在每个文本框旁边放置一个标签,在快捷键前使用“_”字符指定内容,并指定每个标签的“目标”属性到各自的文本框。

不幸的是,在这种情况下,每个文本框都没有标签,也不会有。

是否可以为文本框指定AccessText快捷键,不带Label?

【问题讨论】:

    标签: c# wpf textbox keyboard-shortcuts


    【解决方案1】:

    您可以处理组合键按下,然后将焦点放在 TextBox 上:

    *.xaml:

    <UserControl Loaded="UserControl_Loaded">
        <Grid>
            <StackPanel>
                <TextBox Height="30" x:Name="txt1"/>
                <TextBox Height="30" x:Name="txt2"/>
            </StackPanel>
        </Grid>
    </UserControl>
    

    *.cs

        public UserControl()
        {
            InitializeComponent();
        }
    
        private void KeyDownEvent(object sender, KeyEventArgs e)
        {
            bool x = Keyboard.IsKeyDown(Key.System);
            if (Keyboard.IsKeyDown(Key.System) && Keyboard.IsKeyDown(Key.B))// Alt+B
            {
                txt2.Focusable = true;
                txt2.Focus();
            }
        }
    
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            var window = Window.GetWindow(this);
            window.KeyDown += KeyDownEvent;
            txt1.Focusable = true;
            txt1.Focus();
        }
    }
    

    【讨论】:

    • 谢谢阿明。我有一种感觉,它会变成这样。我希望避免自己处理按键事件,并能够在 xaml 中设置组合键。但是使用您的代码,我可以看到一个附加属性或行为的路径,可以让我在标记中进行设置。不过,我会暂时不回答这个问题,以防其他人有什么要补充的。
    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2010-09-12
    相关资源
    最近更新 更多