重写了一个只能输入数字的控件,但在其上点Mouse,可以Paste非数字的值,怎么搞定这事?也就是说,怎么让Paste数字的值过来,而非数字的值Paste不进去?

解决方案 »

  1.   

    写TextChanged/TextChanging函数判断
      

  2.   

    Clipboard.GetDataObject函数可以取出系统剪切版中的数据,你可以自己写一个Paste的contextmenu然后用Clipboard.GetDataObject取出数据后先判断,再Paste
      

  3.   

    using System.Runtime.InteropServices;[DllImport("User32.dll")]
    static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
    [DllImport("User32.dll")]
    static extern int GetWindowLong(IntPtr hWnd, int nIndex);
    public const int GWL_STYLE = -16;
    public const int ES_NUMBER = 0x2000;
    private void Form1_Load(object sender, EventArgs e)
    {
        SetWindowLong(textBox1.Handle, GWL_STYLE,
            GetWindowLong(textBox1.Handle, GWL_STYLE) | ES_NUMBER);
    }