【发布时间】:2010-09-05 16:22:55
【问题描述】:
是否有任何方法可以从 .NET 2.0 TextBox 控件中捕获 MouseDown? 我知道继承的 Control 类有事件,但它没有在 TextBox 中公开。 有没有办法覆盖事件处理程序?
我还尝试了 OpenNETCF TextBox2 控件,它确实暴露了 MouseDown 事件,但无论我做什么,它都不会触发处理程序。
有什么建议吗?
什么疯狂的移动设备做什么 你有那个有鼠标吗? :)
是的,windows mobile 没有真正的鼠标,但是您误认为 Windows Mobile .NET 不支持鼠标事件。屏幕上的单击或移动仍被视为“鼠标”事件。这样做是为了让代码可以轻松地从完整的 Windows 移植过来。这不是 Windows Mobile 特定的问题。 Windows 上的 TextBox 控件也没有本机鼠标事件。在这种情况下,我恰好使用的是 Windows Mobile。
编辑:附带说明...由于 Windows Mobile 由 WindowsCE 内核构建,该内核通常用于嵌入式桌面系统和 Slim 终端服务客户端或“WinTerms”,它支持硬件鼠标并具有很久。大多数设备只是没有插入端口。
根据 .Net 框架, 文本框上的 MouseDown 事件处理程序 支持。当你 尝试运行代码?
实际上,这只是因为它从“控件”继承它,每个其他表单控件也是如此。但是,它在 TextBox 类中被覆盖(并且我相信已更改为私有)。所以它不会出现在 Visual Studio 的 IntelliSense 中。
但是,你实际上可以编写代码:
textBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.textBox1_MouseDown);
它会编译并运行得很好,唯一的问题是当你点击 TextBox 控件时 textBox1_MouseDown() 不会被触发。我认为这是因为事件在内部被覆盖。我什至不想在内部更改事件中发生的事情,我只想将我自己的事件处理程序添加到该事件中,这样我就可以像处理任何其他事件一样触发一些自定义代码。
【问题讨论】:
-
你有什么样的疯狂移动设备,有鼠标? :) 说真的,没有 MouseDown 事件的原因是因为 Windows Mobile 没有鼠标。你想在 MouseDown 事件处理程序中做什么?也许还有其他方法。
标签: c# .net events windows-mobile