【问题标题】:Apply shortcut keys to Silverlight page将快捷键应用到 Silverlight 页面
【发布时间】:2010-05-14 10:32:36
【问题描述】:

申请要求如下.. 在 Silverlight 子页面(用户控件,当您单击菜单项时)打开页面,它需要填充一些数据,然后为了保存,我们有保存按钮来取消它,我们有取消按钮。 在这里我正在寻找保存数据我需要使用快捷键(Ctrl + S)。 如果我在 KeyDown 事件中编写以下代码,则无法正常运行,因为 通常我们在 Presssed 模式下按“Ctrl”键,然后按“S”键 在这里,如果我没有释放“Ctrl”键,则它不起作用.. 否则即。如果按“Ctrl”键然后释放它然后按“S”它工作正常..

//代码 //int count=0;---全局--- 受保护的覆盖无效 OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e);

        if (e.Key == Key.Ctrl)
        {
            count = 1;

        }
        string str = e.Key.ToString();
        if (count >0 && str == "S")
        {
            //MessageBox.Show("Saved");
            //Saving the data  
            count = 0;
        }

    }

我正在寻找它的工作原理
用“Ctrl”键处于按下模式

请看这个...

谢谢

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    使用 Keyboard.Modifiers 检查 Ctrl 按钮状态。粗略的例子:

        if (e.Key == Key.S && Keyboard.Modifiers == ModifierKeys.Ctrl)
        {
            //MessageBox.Show("Saved");
            //Saving the data  
        };
    

    【讨论】:

    • +1 有一个小问题:Modifiers 枚举是“标志”,所以我相信你需要使用按位运算符:(Keyboard.Modifiers & ModifierKeys.Ctrl) == ModifierKeys.Ctrl
    【解决方案2】:

    以下代码似乎可以正常工作,但似乎该事件根本不会被触发,除非页面上有输入控件,例如文本框等。

    public partial class MainPage : UserControl
    {
        private bool _CtrlPressed;
    
        public MainPage()
        {
            InitializeComponent();
    
            LayoutRoot.KeyDown += new KeyEventHandler(LayoutRoot_KeyDown);
            LayoutRoot.KeyUp += new KeyEventHandler(LayoutRoot_KeyUp);
        }
    
        void LayoutRoot_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Ctrl)
                _CtrlPressed = true;
        }
    
        void LayoutRoot_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Ctrl)
                _CtrlPressed = false;
    
            if (e.Key == Key.S && _CtrlPressed)
            {
                Debug.WriteLine("Ctrl + S was pressed");
                //Execute save operation
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2011-03-22
      • 2016-12-02
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多