想给textbox添加事件,比如click,mousedown ,mouseup,Mousemove 不知道哪位大哥做过,谢谢!

解决方案 »

  1.   

    textbox1.Click += new EventHandler((object obj, EventArgs ea) => MessageBox.Show("Click!"));
      

  2.   

    textbox1.Click += new EventHandler((object obj, EventArgs ea) => MessageBox.Show("Click!"));
      

  3.   

    textBox1.Click += new EventHandler(textBox1_Click); 
    textBox1.MouseDown +=new MouseEventHandler(TextBoxMouseDownHandler);
    web
    this.textBox1.Attributes.Add("onblur", "test(this);");
      

  4.   

    TextBox1.Click    += delegate
        {
        };
      

  5.   

    this.TextBox1.Attributes["onClick"] = ClientScript.GetPostBackEventReference(Button1, null);//添加单击事件,
     protected void Button1_Click(object sender, EventArgs e)
            {
                //单击事件,需要实现的功能
            }其他类似
      

  6.   

    这种用内置的EventHandler就可以了.
      

  7.   

    忘记跟大家说了,这个是winform .net compack framework 框架下面
    textbox 本身没有支持click ,mousedown,mouseup,mousemove事件
      

  8.   

    子类化。
    别无他法。没例子。如果你用过vc6,vb6,你会明白我的意思。反之,你可以跟帖,我有空了写个例子给你。
      

  9.   

    新建智能设备应用程序,往窗体上拖一个textbox。粘贴如下代码到你的窗体文件中,替换掉。就可以看到效果了。注意修改一下命名空间名称和你的parital类一样
    using System;
    using System.Linq;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;namespace CSharpMobile02
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        [DllImport("coredll.dll")]
            private extern static int CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hwnd, uint msg, uint wParam, int lParam);
            [DllImport("coredll.dll")]
            public static extern IntPtr SetWindowLong(IntPtr hwnd, int nIndex, IntPtr dwNewLong);
            public const int GWL_WNDPROC = (-4);
            public IntPtr OldProc = IntPtr.Zero;
            public delegate int WndProcHandler(IntPtr hwnd, uint msg, uint wParam, int lParam);
            WndProcHandler myproc = null;
            public const int WM_LBUTTONDOWN = 0x201;
            public const int WM_LBUTTONUP = 0x202;
            public const int WM_MOUSEMOVE = 0x200;
            int MyWndProc(IntPtr hwnd, uint msg, uint wParam, int lParam)
            {
                if (msg == WM_LBUTTONDOWN)//处理mousedown
                {
                    textBox1.Text = "WM_LBUTTONDOWN";
                }
                else if (msg == WM_LBUTTONUP)//处理mouseup和click
                {
                    textBox1.Text = "WM_LBUTTONUP";
                }
                else if (msg == WM_MOUSEMOVE)//处理mouse_move
                {
                    textBox1.Text = "WM_MOUSEMOVE";
                }
                return CallWindowProc(OldProc, hwnd, msg, wParam, lParam);
            }   
            protected override void OnLoad(EventArgs e)
            {
                base.OnLoad(e);
                myproc = new WndProcHandler(MyWndProc);
                OldProc = SetWindowLong(textBox1.Handle, GWL_WNDPROC, Marshal.GetFunctionPointerForDelegate(myproc));   
            }
        }
    }通过测试,可以在文本框中显示出对应的消息名。也就能处理对应的消息了。
      

  10.   

    老办法是直接在事件列表里,双击相应的事件就可以添加了。
    比较地道的方法是,直接在form_load方法里添加
    textbox.click+=new new EventHandler(textBox1_Click); 
      

  11.   


    有MouseClick、MouseDown、MouseUp事件,你仔细找找 
      

  12.   

    单击事件都有了。坐标不是很容易么
    Control.MousePosition