将快捷键应用于Silverlight页面

将快捷键应用于Silverlight页面,silverlight,Silverlight,在应用中,要求如下。。 在Silverlight子页面(Usercontrol,当您单击菜单项时)中,打开需要填充一些数据的页面,然后保存,我们有保存按钮取消,我们有取消按钮。 在这里,我要保存的数据,我需要使用快捷键(Ctrl+S)。 如果我在KeyDown事件中编写以下代码,它将无法正常工作,因为 通常我们在按下模式下按“Ctrl”键,然后按“S”键 在这里,如果我按下“Ctrl”键未释放,则该键不起作用。。 否则,如果按“Ctrl”键,然后松开它,然后按“S”键,则工作正常 //代码 //

在应用中,要求如下。。 在Silverlight子页面(Usercontrol,当您单击菜单项时)中,打开需要填充一些数据的页面,然后保存,我们有保存按钮取消,我们有取消按钮。 在这里,我要保存的数据,我需要使用快捷键(Ctrl+S)。 如果我在KeyDown事件中编写以下代码,它将无法正常工作,因为 通常我们在按下模式下按“Ctrl”键,然后按“S”键 在这里,如果我按下“Ctrl”键未释放,则该键不起作用。。 否则,如果按“Ctrl”键,然后松开它,然后按“S”键,则工作正常

//代码 //整数计数=0--全球的--- 受保护的覆盖无效OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e)

我正在寻找它在
“Ctrl”键处于按下模式

请调查一下这个


谢谢

下面的代码似乎工作正常,但除非页面上有输入控件(如文本框等),否则事件似乎根本不会被触发

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
        }
    }
}

下面的代码似乎工作正常,但除非页面上有输入控件(如文本框等),否则似乎根本不会触发事件

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
        }
    }
}

使用键盘。修改器检查Ctrl按钮状态。粗略示例:

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

使用键盘。修改器检查Ctrl按钮状态。粗略示例:

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

+带诡辩的1:enum的
修饰符是“标志”,因此我认为您需要使用位运算符:
(Keyboard.Modifiers&ModifierKeys.Ctrl)==ModifierKeys.Ctrl
+1带诡辩的1:enum的
修饰符是“标志”,所以我相信您需要使用位运算符:
(Keyboard.Modifiers&ModifierKeys.Ctrl)==ModifierKeys.Ctrl