e.Handled 在 VB.net 2010 中不起作用
Posted
技术标签:
【中文标题】e.Handled 在 VB.net 2010 中不起作用【英文标题】:e.Handled is not working in VB.net 2010 【发布时间】:2012-09-16 00:52:05 【问题描述】:我在 vb.net 中制作了一个快速的网络浏览器,我有它,所以当您按下 Enter 键时,它会导航到 textbox1 中的网页。唯一的问题是,每次我按 Enter 键时它都会发出哔哔声。我尝试使用 e.Handled = True,但它没有做任何事情。这是我的按键代码
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
e.Handled = True
WebBrowser1.Navigate(TextBox1.Text)
End If
End Sub
我以为 e.Handled 会消除烦人的哔哔声,但事实并非如此。
【问题讨论】:
如果 Navigate 被移除,蜂鸣声会“停止”吗? (例如,e.Handled 是红鲱鱼吗?) 不,如果我移除 Navigate,仍然会发出哔声。当我按下回车键时,我需要一种停止哔哔声的方法,许多网站和论坛都说使用 e.Handled = True 【参考方案1】:您想要的KeyEventArgs
属性不是Handled,而是SuppressKeyPress。
即
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
WebBrowser1.Navigate(TextBox1.Text)
End If
End Sub
来自第一个 MSDN 链接:
Windows 窗体中的不同控件以不同方式实现处理。对于像 TextBox 这样的子类本机 Win32 控件的控件,它被解释为意味着不应将关键消息传递给底层本机控件。如果在 TextBox 上将 Handled 设置为 true,则该控件不会将按键事件传递给底层 Win32 文本框控件,但仍会显示用户键入的字符。
如果要阻止当前控件接收按键,请使用 SuppressKeyPress 属性。
【讨论】:
以上是关于e.Handled 在 VB.net 2010 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 VB.NET 中使用 OleDb.NET 调用 Access 2010 存储选择查询的异常
在 VB.NET 2010 中使用 GetAsyncKeyState 时的 PInvokeStackImbalance