我想做的效果是,visual studio的窗口标签栏那样,右键点一个标签,然后切换到对应的tabPage,然后弹出右键菜单。请问 消息事件里面怎么判断 右键单击的是哪个tabPage的标签?

解决方案 »

  1.   

    mouseclick事件里判断
    e.x和e.y
      

  2.   

    这个我知道。就是怎么根据这个点坐标取到对应的tabPage?
      

  3.   

    你不是可以看到每个tabPage的高和宽么?用QQ截图
      

  4.   

    .......神经用坐标判断   
    tabControl和tabPage都有事件判断哪个tabpage被点击(显示到前台)
      

  5.   

    右击你就不能加右击事件 在事件里用sender吗
    tabcontrol.selecttab((tabpage)sender);
      

  6.   


    我之前就是这么写的
    但是报错。。
    Non-invocable member 'System.Windows.Forms.TabControl.SelectedTab' cannot be used like a method. 我是刚学C#的。。
    请问这个是什么原因?~
      

  7.   

    void selecttab(tabPage)
    tabPage selectedtab
    一个是属性 一个是方法 你可以刚学C# 但是要看清楚
      

  8.   

    这个,是我没学认真。是最近被老总调来学C#。比较急着用~换成方法依然出错。。
    因为sender这个是tabcontrol对象,不是tabPage。。
      

  9.   


    在tabcontrol上的事件sender参数当然是tabcontrol了
      

  10.   


    我的tabPage是动态生成的,那您的意思是我得在创建tabPage的时候,添加一个右击的事件嘛~?
      

  11.   

    问题解决这位兄弟,我还真得用坐标来判断是属于哪个page。
    你说的所谓的事件我翻看tabcontrol代码看了2,3遍还没找到合适的函数,不知道您到底有没有用过这个selectTab(int index)方法,这个方法仅仅是用来选择指定索引,或者指定page的页,但是你能判断出是哪个页面发送了这个消息么~? 
    所以您可以说人神经,但是您必须自己试过了再说最后说解决方法
    1取得右击事件里面的e 里面记录的鼠标坐标.
    2.tabControl有一个函数getTabRect,用一个循环调用tabControl的这个方法 getTabRect(i),i是这个控件页面的索引值
    3.判断上面方法取得的矩形是否包含了 (1)中的鼠标坐标,如果是,这个page的索引值就是需要的值。