【问题标题】:e.Keycode not act as expectede.Keycode 未按预期运行
【发布时间】:2014-06-23 15:03:37
【问题描述】:

(如果标题不够清楚,请见谅)

在 Visual Studio 2013 中,我在 ComdoBox 键中编写了以下代码

combobox数据源设置为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

【问题讨论】:

    标签: .net visual-studio keypress keycode


    【解决方案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,这始终是一个非零值。

    【讨论】:

      猜你喜欢
      • 2014-11-12
      • 1970-01-01
      • 2020-06-28
      • 2012-02-18
      • 2018-01-18
      • 2012-06-14
      • 2019-03-03
      • 2012-09-21
      • 2014-07-19
      相关资源
      最近更新 更多