现在想模仿UltraEdit在鼠标右键点击标签的时候可以弹出菜单对这个标签对应的页面进行操作,但是c#中tabpage对鼠标的响应是在页面内而不是标签上,真是别扭,而且由于我现在采用了动态创建标签的方式,所以如果创建了很多标签之后很难采用鼠标定位的方法来确定哪个标签被鼠标右键点击了,忙了很久也没想出办法,请各位高手帮帮忙吧!!!

解决方案 »

  1.   

    我测试了一下,TabControl的MouseDown事件可以一用:
    private void tabControl1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(e.Button == MouseButtons.Right)
    {
    this.contextMenu1.Show(this.tabControl1, new Point(e.X, e.Y));
    }

      

  2.   

    是可以做的,例如:
    private void tabControl1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    Point pt = new Point( e.X, e.Y );

    for( int i = 0; i < tabControl1.TabCount; i++ )
    {
    Rectangle recTab = tabControl1.GetTabRect( i );
    if( recTab.Contains(  pt ) )
    Debug.WriteLine( i.ToString() );//do what you want here
            }
    }
      

  3.   

    以上的方法可以完全定位到某个tab标签上。
      

  4.   

    但是在某个tabpage上,则无法用上面的方法。
      

  5.   

    请问楼上的this.contextMenu1.Show(this.tabControl1, new Point(e.X, e.Y))是什么意思?