运算符'=='不能应用于'System.Windows.Forms.Keys'和'int'类型的操作数

Mat*_*tts 3 c#

我正在将项目从Visual Basic .Net转换为C#; 我已经能够找出大部分差异并使代码工作,但我遇到了诸如以下代码片段之类的障碍:

private void rtbSend_KeyDown1(object sender, KeyEventArgs e)
{          
  if (e.KeyCode == 17)
  {
     blnCtrlKey = true;
  }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我在主题行中得到错误; 令我困惑的是,KeyCode的值应该已经是int,所以错误对我来说没什么意义.谁能指出我正确的方向?我想让这个代码的程序将在4月中旬开始工作.

Ste*_*eve 7

不,传递给KeyDown事件的KeyEventArgs参数的KeyCode属性是Keys(枚举)类型.

在C#中,您不能依赖编译器/语言为您从一种类型转换为另一种类型.比较值时使用适当的转换或转换,或者更好地使用正确的类型.

private void rtbSend_KeyDown1(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.ControlKey)  
    {
        blnCtrlKey = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

与您的情况相关,我希望发出控制键的当前状态已在KeyEventArgs 的Control属性中可用,因此如果您需要测试组合键IE,则使用此属性会更好:CTRL + N

private void rtbSend_KeyDown1(object sender, KeyEventArgs e) 
{
    // Control is pressed with the N key
    if (e.Control && e.KeyCode == Keys.N)  
    {
        ..... 
    }
}
Run Code Online (Sandbox Code Playgroud)