如何让方向键充当其他键的作用?

发布于 2024-08-28 02:04:14 字数 227 浏览 6 评论 0原文

在Silverlight项目中,如何使向左箭头的行为类似于.(点),当用户在文本框中按向左箭头时,它将键入 。以及以同样的方式如何使右箭头像 - (破折号)一样

,我想使用 CTRL 键在两种模式之间切换: 。和破折号,常规箭头行为,意味着当用户按下 Control 时,拖曳箭头将充当 。和破折号。当用户再次按下控件时,两个箭头将像平常的箭头一样起作用。

In Silverlight project, how to make the left arrow act like . (dot), when a user press the left arrow in a textbox it will type . and also in the same way how to make the right arrow act like - ( dash)

And I want to use the CTRL key to switch between 2 modes: . and dash, regular arrows behavior, mean when a user press Control the tow arrows will act as . and dash. And when a user press agian the control the 2 arrows will act as usual arrows.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

戏舞 2024-09-04 02:04:14

如果是 win 表单或 WPF,您只需捕获按键事件并更改其行为,然后将其设置为“已处理”(在 (PreviewKeyDown) 之前和之后有一堆事件,您可以使用它们来完全控制每个事件上发生的情况 。

您还可以使用 API 检查是否按下了 CTRL 键
在 WPF 中使用 KeyboardDevice 属性,检查:

if ((e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)

添加:
同时 - 检查一下SO问题

和这也是:SO问题2

If it's win forms or WPF you just catch the event of the keypressed and change it's behavior and than set it as "Handled" (there is a bunch of events before and after (PreviewKeyDown) that you can use to fully control what happens on every key pressing.

You can check if CTRL key is pressed as well using API.
using KeyboardDevice Property in WPF, checking:

if ((e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)

Addition:
Meanwhile - check this out SO question

and This one as well: SO Question2

梦巷 2024-09-04 02:04:14
private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (sender is TextBox)
            {
                TextBox textBox = (TextBox)sender; 
                if (e.Key == Key.Left || e.Key == Key.Right)
                {
                    e.Handled = true; 
                    char insert; 
                    if (e.Key == Key.Left) 
                    { 
                        textBox1.SelectionStart = textBox1.Text.Length + 1; 
                        insert = '.';
                    }
                    else
                    { 
                        insert = '-';
                    } 
                    int i = textBox.SelectionStart;
                    textBox1.Text = textBox1.Text.Insert(i, insert.ToString());
                    textBox1.Select(i + 1, 0);
                }
            }
        }
private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (sender is TextBox)
            {
                TextBox textBox = (TextBox)sender; 
                if (e.Key == Key.Left || e.Key == Key.Right)
                {
                    e.Handled = true; 
                    char insert; 
                    if (e.Key == Key.Left) 
                    { 
                        textBox1.SelectionStart = textBox1.Text.Length + 1; 
                        insert = '.';
                    }
                    else
                    { 
                        insert = '-';
                    } 
                    int i = textBox.SelectionStart;
                    textBox1.Text = textBox1.Text.Insert(i, insert.ToString());
                    textBox1.Select(i + 1, 0);
                }
            }
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文