我在A窗体点击按钮,显示B窗体,有时点的比较快,就会点到B窗体的一堆按钮中,造成误操作。
我在Actived事件和VisibleChanged事件里设了 把鼠标设置到空白区域,但是仍然会这种情况。
我想在窗口显示出来之前设置鼠标的位置应该怎么做?

解决方案 »

  1.   

    我们公司也曾遇到过这种情况,做法是窗体A中按下按钮C时将按钮C禁止掉(Enable = False),打开窗体B然后B关闭后将按钮C启用。
      

  2.   

    在事件处理里面设置标志位,如果为false直接返回,等所有条件都具备了,将其设置为true。这样就可以正常处理事件了,如果误点了也没事,因为会return。
      

  3.   

    新开窗口上有N多按钮,不可能一个一个设上标志,我想最好在Form上处理一下。
      

  4.   

    新开窗口上有N多按钮,不可能一个一个设上标志,我想最好在Form上处理一下。
      

  5.   

    我在另一贴中帮你的回答不知道能不能解决你的问题:
    sonwin sw=new sonwin();
    sw.Show();
    this.Cursor.Position=sw.Location;
    反正你点一下主窗口的BUTTON打开子窗口后,光标就在子窗口的左上角再点几次也不成问题
    你另一贴是:http://community.csdn.net/Expert/topic/4530/4530524.xml?temp=.2219965
    哈哈,我快发疯了那么简单的问题能得400分真是想也想不到,楼主为我争取六条三角做出了不可磨灭的贡献
      

  6.   

    to lovevsnet:你的方法 我试了。还是不行。似乎鼠标的单击的消息 存在一个 消息 队列中。在把光标设到新的角上之后,前面多点的几下仍然会在刚才的位置上的按钮上生效
      

  7.   

    实在不行就  API 锁鼠标
      

  8.   

    //DLLIMPORT
    [DllImport("user32.dll",CharSet=CharSet.Auto,
     CallingConvention=CallingConvention.StdCall)]
    public static extern IntPtr FindWindow(string lpclass,string lpcap);
    //YOUR CODE BELOW:
    if(FindWindow("","子窗口标题")==IntPtr.Zero)
    {
    sonwin sw=new sonwin();
    sw.Show();//先显示子窗口
    Cursor.Position=sw.Location;//再移动光标到子窗口的左上角}
      

  9.   

    Timer ,直接一开始把Form Enable掉。
    过一两妙才可以点击就好了。
      

  10.   

    [DllImport("user32.dll", EntryPoint="SetCursorPos")]
    public static extern int SetCursorPos (
    int x,
    int y
    );
    private void Form3_Load(object sender, System.EventArgs e)
    {
    this.Enabled = false;
    SetCursorPos(0,0);
    }调windows api设置鼠标的位置。