确定Windows窗体应用程序中的插入模式

时间:2014-01-13 06:28:05

标签: c# winforms

我想检查C#Windows窗体应用程序中的Insert键的状态。这是最小的代码(不起作用;带有两个RadioButton的表单):

using System;
using System.Windows.Forms;

using System.Windows.Input;
// Also added PresentationCore and WindowsBase refereneces

namespace InsertModeDemo1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (Keyboard.IsKeyToggled(Key.Insert))
                radioButtonInsert.Checked = true;
            else
                radioButtonOverstrike.Checked = true;
        }
    }
}

2 个答案:

答案 0 :(得分:5)

请尝试使用Control.IsKeyLocked

private void Form1_Load(object sender, EventArgs e)
{
  if (Control.IsKeyLocked(Keys.Insert))
    radioButtonInsert.Checked = true;
  else
    radioButtonOverstrike.Checked = true;
}

参考文献:Control.IsKeyLocked

注意

  

文档说该方法仅适用于 CAPS LOCK NUM LOCK SCROLL LOCK 键。但是使用Keys.Insert测试方法已经证明它也适用于 INSERT 键。

答案 1 :(得分:0)

您有两种选择:

  1. 聆听关键更改事件,这意味着,您需要根据按下按钮的时间自行跟踪状态。
  2. 使用win32 interop,例如看看here