原来在点击DataGridView1的各个列标题时会出现一个对话框,显示在列标题旁边。可是在我编程更改了显示顺序后,点击列标题时,对话框的显示位置就乱套了。
请问高手,如何获取DataGridView显示的列的列标题x坐标 
 
 

解决方案 »

  1.   

    if (e.RowIndex > -1 && e.ColumnIndex > -1)
    {
        MousePosition.X
        MousePosition.Y
    }
    DataGridView.CurrentCell.ColumnIndex
      

  2.   

    Rectangle rectContent = dataGridView1.Columns[2].HeaderCell.ContentBounds;
                int xPot = rectContent.X;
                int yPot = rectContent.Y;            Rectangle rectCell = dataGridView1.GetCellDisplayRectangle(2, -1, true);
                checkBox1.Location = new Point(dataGridView1.Left + rectCell.X + xPot, dataGridView1.Top + rectCell.Y + yPot);
      

  3.   

    不知道你使用的哪个事件?如果是CellHeaderMouseClick事件,那么e中是有列索引的。
      

  4.   

    这个方法获得的位置是Columns(2)的位置,但是它的显示位置并不在这里。
      

  5.   

    DataGridView的GetCellDisplayRectangle方法可以用来获取单元格的显示区域的矩形,可用这个方法取得第一行的位置,再根据HeaderCell的ContentBounds进行修正,可以获得列标头的显示矩形。