捕获.NET TextBox的MouseDown场合

是否有任何方法可以从.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 Framework,TextBox上的MouseDown事件处理程序是持续的。 当您尝试运行代码时会发生什么?

实际上,这就是因为它从“控制”中获取它,就像它一样 一切 各种其他表格控制。 尽管如此,它在TextBox类中被覆盖(并且还转换为我认为的独占)。 因此,它肯定会让Visual Studio中的IntelliSense失望。

尽管如此,您实际上可以编写代码:

textBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.textBox1_MouseDown);

并且它肯定会编译并且运行起来非常棒,唯一的麻烦是当触摸TextBox控件时,textBox1_MouseDown()肯定不会被释放。 我认为这是因为事件被内部绕过了。 我并不打算改变内部场合,我只是打算将我自己的场合训练师添加到那个场合,这样我就可以在各种其他场合下出一些个性化的代码。

0
2019-05-18 21:21:17
资源 分享
答案: 3

公平充足。 您可能认识到比Windows Mobile更重要。 我只是开始为它设定。 然而,在正常的WinForms中,您可以绕过OnXxx场合培训师所需的一切。 使用CF一瞥Reflector,可以看出Control,TextBoxBase和TextBox并没有阻止你绕过OnMouseDown场合训练师。

你试过这个吗?:

public class MyTextBox : TextBox
{
    public MyTextBox()
    {
    }

    protected override void OnMouseDown(MouseEventArgs e)
    {
        //do something specific here
        base.OnMouseDown(e);
    }
}
0
2019-05-19 23:35:08
资源

看起来你是对的。 拖动。 没有MouseOver场合。

然而,在不断使用.NET的突发事件中,有P / Invoke。 一个人目前正在为.NET CF TextBox做这个。 我在CodeProject上找到了这个:

http://www.codeproject.com/KB/cs/TextBox_subclassing.aspx

希望这个帮助

0
2019-05-19 23:24:50
资源

根据.Net Framework,TextBox上的MouseDown事件处理程序是持续的。 当您尝试运行代码时会发生什么?

0
2019-05-19 22:46:02
资源