在一个winForm里面, 加了一个TabControl, 原先这个TabControl添加了一个OnClick事件, 并且能响应该事件, 问题是, 在我后来添加了DragOver以及MouseDown事件后(用来Handle这个TabControl可自由拖动它的TabPage), 原来的Click事件就响应不了了, 这是怎么回事呢?请教高手~~

解决方案 »

  1.   

    當有拖放事件時﹐點擊鼠標時﹐會先觸發Drag事件,所以就不會的Click事件了,所以最好在Click事件結束后添加Drag的代理事件﹐然后在MouseUp時取消Drag,或者在Click時判斷所選的頁是否為當前頁﹐是則觸發Drag事件﹐否則執行Click事件
      

  2.   

    人确定是DragOver以及MouseDown引起的吗?
      

  3.   

    可以肯定是MouseDown中添加了DoDragDrop導致Click不能觸發
      

  4.   

    确实是MouseDown & DragOver导致Click事件无法响应现在改在MouseDown触发之前的Click事件要做的东东, 问题就解决了
      

  5.   

    你用的是VS2005吗?
    我用了一个Panel,添加了它的Click事件及MouseDown事件,测试是可以的:private void panel1_Click(object sender, EventArgs e)
    {
    System.Console.WriteLine("click");
    }private void panel1_MouseDown(object sender, MouseEventArgs e)
    {
    this.panel1.DoDragDrop("aaaa", DragDropEffects.All);
    }和你的有什么不同吗?
      

  6.   

    我用的是VS2005, 你多添加一个DragOver事件看看, Click事件会在有DragOver的情况下触发不了, 呵呵
      

  7.   

    是这样的吗?
    private void panel1_Click(object sender, EventArgs e)
    {
    System.Console.WriteLine("click");
    }private void panel1_MouseDown(object sender, MouseEventArgs e)
    {
    this.panel1.DoDragDrop("aaaa", DragDropEffects.All);
    }private void panel1_DragOver(object sender, DragEventArgs e)
    {}我这里还是可以的啊.
      

  8.   

    还是可以?你有把AllowDrop设为True么? 我这里是触发不了的啊...
      

  9.   

    代码如下(没有问题):
    protected override void OnClick(EventArgs e)
    {
    base.OnClick(e);
    this.tabPage1.AllowDrop = true;}
    private void tabPage1_Click(object sender, EventArgs e)
    {
    System.Console.WriteLine("click");
    }private void tabPage1_MouseDown(object sender, MouseEventArgs e)
    {}private void tabPage1_DragOver(object sender, DragEventArgs e)
    {}