e.Keycode没有按预期行事

时间:2014-06-23 15:03:38

标签: .net visual-studio keypress keycode

(对不起,如果标题不够清楚)

在visual studio 2013中我在ComdoBox键中编写了下面的代码

组合框数据源设置为odbc数据表

我尝试使用自动填充文件从组合框中进行组合操作。

Dim PrK As Boolean = e.KeyCode = Keys.Back Or Keys.End Or Keys.Home _
                     Or Keys.PageDown Or Keys.PageUp Or Keys.Delete Or Keys.Up Or Keys.Down _
                     Or Keys.Right Or Keys.Left
If PrK = True Then
    Exit Sub
End If
Dim index As Integer
Dim Oldtext = cmbSubProName.Text
index = cmbSubProName.FindString(Oldtext)
If index > -1 Then
    Dim res As String
    res = cmbSubProName.Items(index).ToString
    cmbSubProName.SelectedIndex = index
    cmbSubProName.SelectionStart = Oldtext.Length
    cmbSubProName.SelectionLength = cmbSubProName.Text.Length
End If

当运行项目并在组合框中按任意键(v,y或任何其他字符)时,我发现Prk通常是真的!!

我也试过下面的代码和相同的

if e.KeyCode = Keys.Back Or Keys.End Or Keys.Home _
                     Or Keys.PageDown Or Keys.PageUp Or Keys.Delete Or Keys.Up Or Keys.Down _
                     Or Keys.Right Or Keys.Left then
exit sub
end if

1 个答案:

答案 0 :(得分:1)

作为一般规则,True被视为任何非零值,False为零。

Prk的值设置不正确 - 您对语法感到困惑。你真正想要的是:

Dim PrK As Boolean = e.KeyCode = Keys.Back Or _
                     e.KeyCode = Keys.End Or _
                     e.KeyCode = Keys.Home Or _
                     e.KeyCode = Keys.PageDown Or _
                     e.KeyCode = Keys.PageUp Or _
                     e.KeyCode = Keys.Delete Or _
                     e.KeyCode = Keys.Up Or _
                     e.KeyCode = Keys.Down Or _
                     e.KeyCode = Keys.Right Or _
                     e.KeyCode = Keys.Left

您编写的语法实际上是对所有这些关键枚举的值进行二进制 - Or,这些值始终为非零值。