RT通过坐标点来定位dataGridView 的某一行,谢谢

解决方案 »

  1.   

    想在鼠标经过的某行,改变一下他的风格。我是在做行拖动时想要这样的效果。
    是Winform谢谢
      

  2.   

    给你正确答案:     返回光标处的行索引号()
            public int GetRowIndexAt(int mouseLocation_Y)
            {
                if (dataGridView1.FirstDisplayedScrollingRowIndex < 0)
                {
                    return -1;  // no rows.   
                }
                if (dataGridView1.ColumnHeadersVisible == true && mouseLocation_Y <= dataGridView1.ColumnHeadersHeight)
                {
                    return -1;
                }
                int index = dataGridView1.FirstDisplayedScrollingRowIndex;
                int displayedCount = dataGridView1.DisplayedRowCount(true);
                for (int k = 1; k <= displayedCount; )  // 因为行不能ReOrder,故只需要搜索显示的行   
                {
                    if (dataGridView1.Rows[index].Visible == true)
                    {
                        Rectangle rect = dataGridView1.GetRowDisplayRectangle(index, true);  // 取该区域的显示部分区域   
                        if (rect.Top <= mouseLocation_Y && mouseLocation_Y < rect.Bottom)
                        {
                            return index;
                        }
                        k++;  // 只计数显示的行;   
                    }
                    index++;
                }
                return -1;
            }  测试用代码:    把当前行的index号(从0开始)显示到TextBox1上。
            private void dataGridView1_MouseMove(object sender, MouseEventArgs e)
            {
                textBox1.Text= GetRowIndexAt(e.Y).ToString();   
            }