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

DataGridViewCell里没有Location属性,我要得到当前选中的单元格的屏幕位置从哪里获得?不要和我说鼠标点击的时候获取,因为也可能在键盘方向键移动的时候已... DataGridViewCell里没有Location属性,我要得到当前选中的单元格的屏幕位置从哪里获得?不要和我说鼠标点击的时候获取,因为也可能在键盘方向键移动的时候已经改变位置了,或者tabControl的几个TAB页里翻页的时候第一页的DataGridView的位置或许已经被鼠标事件获取了,但是翻页后获取第二个DataGridView的位置后也许就把前一个覆盖了,也别说用多个变量来记录,我要的是实时可以获得单元格的屏幕坐标,也不是在父容器中的坐标,谢谢!成功后还有加分!
再加点料,我要弹出一个窗口,怎么才能定位在所选单元格的下边框?起始点在单元格的左下角的点上?
展开
 我来答
快乐怪物
推荐于2016-01-04 · TA获得超过886个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:151万
展开全部
首先取得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()只要知道这个就比较好处理了

楼主如果还有什么不清楚的可以直接在线问我哈,或者短消息也可以的
du瓶邪
推荐于2016-04-05 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2954万
展开全部
两种方法:
方法一:
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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
finalyfantasy
2009-10-20 · TA获得超过1364个赞
知道小有建树答主
回答量:1631
采纳率:0%
帮助的人:581万
展开全部
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();

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
killersuaa
2009-10-20
知道答主
回答量:16
采纳率:0%
帮助的人:10.7万
展开全部
先获取form所在单元格坐标。。再调用win32api根据form左上角坐标应该可以其相对屏幕坐标
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式