c# winform DataGridView 单元格的屏幕位置

DataGridViewCell里没有Location属性,我要得到当前选中的单元格的屏幕位置从哪里获得?不要和我说鼠标点击的时候获取,因为也可能在键盘方向键移动的时候已经改变位置了,或者tabControl的几个TAB页里翻页的时候第一页的DataGridView的位置或许已经被鼠标事件获取了,但是翻页后获取第二个DataGridView的位置后也许就把前一个覆盖了,也别说用多个变量来记录,我要的是实时可以获得单元格的屏幕坐标,也不是在父容器中的坐标,谢谢!成功后还有加分!
再加点料,我要弹出一个窗口,怎么才能定位在所选单元格的下边框?起始点在单元格的左下角的点上?

首先取得DataGridView的坐标位置:
int dgvX = dataGridView1.Location.X;
int dgvY = dataGridView1.Location.Y;
然后取得选中单元格的坐标在DataGridView中的坐标位置:
int cellX = dataGridView1.GetCellDisplayRectangle(ColumnIndex,RowIndex,false).X;
int cellY = dataGridView1.GetCellDisplayRectangle(ColumnIndex,RowIndex,false).Y;
最后可以得到每个单元格相对于form的坐标为:
int x = dgvX + cellX;
int y = dgvY + cellY;

这样就可以了,取得单元格坐标位置的主要方法就是
GetCellDisplayRectangle()只要知道这个就比较好处理了

楼主如果还有什么不清楚的可以直接在线问我哈,或者短消息也可以的
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-04-05
两种方法:
方法一:
int index=this.dataGridView1.Rows.Add();
this.dataGridView1.Rows[index].Cells[0].Value = "1";
this.dataGridView1.Rows[index].Cells[1].Value = "2";
this.dataGridView1.Rows[index].Cells[2].Value = "监听";
利用dataGridView1.Rows.Add()事件为DataGridView控件增加新的行,该函数返回添加新行的索引号,即新行的行号,然后可以通过该索引号操作该行的各个单元格,如dataGridView1.Rows[index].Cells[0].Value = "1"。

方法二:
DataGridViewRow row = new DataGridViewRow();
DataGridViewTextBoxCell textboxcell = new DataGridViewTextBoxCell();
textboxcell.Value = "aaa";
row.Cells.Add(textboxcell);
DataGridViewComboBoxCell comboxcell = new DataGridViewComboBoxCell();
row.Cells.Add(comboxcell);
dataGridView1.Rows.Add(row);
第2个回答  2009-10-20
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{

Point p =new Point(this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Location.X+this.dataGridView1.Location.X,
this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Location.Y+this.dataGridView1.Location.Y);
this.label1.Text = p.ToString();

}
第3个回答  2009-10-20
先获取form所在单元格坐标。。再调用win32api根据form左上角坐标应该可以其相对屏幕坐标

c# winform DataGridView 单元格的屏幕位置
首先取得DataGridView的坐标位置:int dgvX = dataGridView1.Location.X;int dgvY = dataGridView1.Location.Y;然后取得选中单元格的坐标在DataGridView中的坐标位置:int cellX = dataGridView1.GetCellDisplayRectangle(ColumnIndex,RowIndex,false).X;int cellY = dataGridView1.GetCellDisplayRectangle(...

C# 在WinForm程序中的一个DataGridView,光标在DataGridView中时如 ...
例如代码:private void DataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e){ Vaule = DataGridView[e.ColumnIndex, e.RowIndex].Value.ToString() ;} ColumnIndex,RowIndex属性就表示了单元格的在表格中的位置

winform 怎么样让datagridview 的列表头显示在左侧而不是上面, datagrid...
datagridview一般横向显示比较合理,要是纵向显示的话,你不能确定它显示多少列,若知道它有多少列的话,设置 gridview 不显示标题栏,然后后台写一个datatable,将你的数据转个向,行转列在赋给gridview就可以了。C#行转列可以百度一下相关源码。 留下邮箱,我发给你源码!

C#如何获取datagridview每个单元格的location
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { var p = PointToClient(Cursor.Position); MessageBox.Show(p.X + "," + p.Y); }将当前鼠标的位置转换为客户区域位置就可以了.

C#如何获取DataGridView对象单元格的内容?
C#如何获取DataGridView对象单元格的内容,这里介绍下获取方法。1、首先需要在事件列表中找到DataGridView对象的CellClick事件。2、然后在此事件中,会有DataGridCiewCellEventArgs事件变量e。3、此时便能利用DataGridCiewCellEventArgs事件变量e的RowIndex属性获得行索引,但是我们需要加1。4、并且还能通过...

C#编写的一个界面 怎样实现dataGridView1里的内容在上面显示?
dataGridView1控件有点击行事件,你对着dataGridView1右键属性,然后找到行事件那里然后就可以在行里面获取该行数据,然后赋值到你对应的textbox。如下代码:private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){ if (this.dataGridView1.SelectedRows != null && this.dat...

在C# Winform中如何让dataGridView选中的行失去焦点
回答:\/\/获得当前选中的行 int rowindex = e.RowIndex; \/\/获得当前行的第一列的值 value1= dategridview.Rows[rowindex].Cells[1].Value.ToString();

C#Windowfrom datagridview控件内容怎么在单元格里自动换行全显示出来...
(1)首先要保证单元格的为Text类型 (2)在程序中加入以下的代码片段 \/\/设置数据源 this.dataGridView1.DataSource = dt;\/\/设置自动换行 this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;\/\/设置自动调整高度 this.dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRows...

C#.NET怎么设置datagridview最左上方的表头,内容,外观及宽度,万分感 ...
dataview.Columns[0].Width = 100;dataview.Columns[1].Width = 900;dataview.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;可以自动调整列的宽度

C# Winform中DataGridView在单元格中显示图片的问题
你可以把那一列的数据绑定成,然后把绑定列的HtmlEncoded(好像是HtmlEncode)设为false,用意是让绑定列直接显示html不转义的效果,不就可以显示图片了吗

相似回答