System.Windows.Forms.CheckBox ckBox = new System.Windows.Forms.CheckBox();
ckBox.Size = new Size(15, 15);
//ckBox.Text = "全选";
ckBox.Checked = true;
ckBox.BackColor = Color.FromArgb(0, 40, 60, 82); //设置背景透明
System.Drawing.Rectangle rect =
dgv.GetCellDisplayRectangle(1, 0, true); //获取位置
ckBox.Location = rect.Location;//设置位置
ckBox.CheckedChanged += new EventHandler(ckBox_CheckedChanged);
dgv.Controls.Add(ckBox);
12 个解决方案
#1
什么意思,怎么不在中间
#2
在界面上直接拖到中间不就行了
#3
你这是把单独一个checkbox加到dgv里去了,而不是加了一列
dgv.GetCellDisplayRectangle(1, 0, true); 这个是你给checkbox的坐标,在左上角
dgv.GetCellDisplayRectangle(1, 0, true); 这个是你给checkbox的坐标,在左上角
#4
看你列里已经有checkbox了,你是想加个"全选"吧?
你得获取第一列标题的宽度和高度,然后计算中间在什么位置.
你得获取第一列标题的宽度和高度,然后计算中间在什么位置.
#5
dgv.GetCellDisplayRectangle(1, 0, true);
获取第1行,第0列的坐标范围?
你表里只有1行,是第0行,你获取第1行,能获取到坐标?
而且你实际上应该是想获取标题的坐标,而不是单元格的坐标.
获取第1行,第0列的坐标范围?
你表里只有1行,是第0行,你获取第1行,能获取到坐标?
而且你实际上应该是想获取标题的坐标,而不是单元格的坐标.
#6
dgv.GetCellDisplayRectangle(0, -1, true); //获取位置
不过好像也没法在这一列Header上居中
#7
getcell是获取的单元格啊,不是列标题.
#8
用GetColumnDisplayRectangle(0,true);
获取第0列的列标题位置
获取第0列的列标题位置
#9
然后想要居中,而不是放到最左边,你还要获取第0列的宽度,自己算一下中间是什么坐标
#10
谢谢各位!实在添加表头添加一个全选的textbox,后来解决了,自己预估了一个大概的范围,就OK了。
#11
System.Windows.Forms.CheckBox ckBox = new System.Windows.Forms.CheckBox();
ckBox.Size = new Size(15, 15);
//ckBox.Text = "全选";
ckBox.Checked = true;
ckBox.BackColor = Color.FromArgb(0, 40, 60, 82); //设置背景透明
System.Drawing.Rectangle rect =
dgv.GetCellDisplayRectangle(0, -1, true); //获取位置
Rectangle oRectangle =dgv.GetCellDisplayRectangle(0, 0, true);
Point oPoint = new Point();
oPoint.X = 90 + (oRectangle.Width - ckBox.Width) / 2 + 1;
oPoint.Y = 10 + (oRectangle.Height - ckBox.Height) / 2 + 1;
//ckBox.Location = rect.Location;//设置位置
ckBox.Location = oPoint;
ckBox.CheckedChanged += new EventHandler(ckBox_CheckedChanged);
dgv.Controls.Add(ckBox);
ckBox.Size = new Size(15, 15);
//ckBox.Text = "全选";
ckBox.Checked = true;
ckBox.BackColor = Color.FromArgb(0, 40, 60, 82); //设置背景透明
System.Drawing.Rectangle rect =
dgv.GetCellDisplayRectangle(0, -1, true); //获取位置
Rectangle oRectangle =dgv.GetCellDisplayRectangle(0, 0, true);
Point oPoint = new Point();
oPoint.X = 90 + (oRectangle.Width - ckBox.Width) / 2 + 1;
oPoint.Y = 10 + (oRectangle.Height - ckBox.Height) / 2 + 1;
//ckBox.Location = rect.Location;//设置位置
ckBox.Location = oPoint;
ckBox.CheckedChanged += new EventHandler(ckBox_CheckedChanged);
dgv.Controls.Add(ckBox);
#12
预估也行,但是要保证你第0列宽度不能变,否则就又偏了.
用8楼代码可以获取到列标题的位置和宽度,就别先获取单元格再硬套了
#1
什么意思,怎么不在中间
#2
在界面上直接拖到中间不就行了
#3
你这是把单独一个checkbox加到dgv里去了,而不是加了一列
dgv.GetCellDisplayRectangle(1, 0, true); 这个是你给checkbox的坐标,在左上角
dgv.GetCellDisplayRectangle(1, 0, true); 这个是你给checkbox的坐标,在左上角
#4
看你列里已经有checkbox了,你是想加个"全选"吧?
你得获取第一列标题的宽度和高度,然后计算中间在什么位置.
你得获取第一列标题的宽度和高度,然后计算中间在什么位置.
#5
dgv.GetCellDisplayRectangle(1, 0, true);
获取第1行,第0列的坐标范围?
你表里只有1行,是第0行,你获取第1行,能获取到坐标?
而且你实际上应该是想获取标题的坐标,而不是单元格的坐标.
获取第1行,第0列的坐标范围?
你表里只有1行,是第0行,你获取第1行,能获取到坐标?
而且你实际上应该是想获取标题的坐标,而不是单元格的坐标.
#6
dgv.GetCellDisplayRectangle(0, -1, true); //获取位置
不过好像也没法在这一列Header上居中
#7
getcell是获取的单元格啊,不是列标题.
#8
用GetColumnDisplayRectangle(0,true);
获取第0列的列标题位置
获取第0列的列标题位置
#9
然后想要居中,而不是放到最左边,你还要获取第0列的宽度,自己算一下中间是什么坐标
#10
谢谢各位!实在添加表头添加一个全选的textbox,后来解决了,自己预估了一个大概的范围,就OK了。
#11
System.Windows.Forms.CheckBox ckBox = new System.Windows.Forms.CheckBox();
ckBox.Size = new Size(15, 15);
//ckBox.Text = "全选";
ckBox.Checked = true;
ckBox.BackColor = Color.FromArgb(0, 40, 60, 82); //设置背景透明
System.Drawing.Rectangle rect =
dgv.GetCellDisplayRectangle(0, -1, true); //获取位置
Rectangle oRectangle =dgv.GetCellDisplayRectangle(0, 0, true);
Point oPoint = new Point();
oPoint.X = 90 + (oRectangle.Width - ckBox.Width) / 2 + 1;
oPoint.Y = 10 + (oRectangle.Height - ckBox.Height) / 2 + 1;
//ckBox.Location = rect.Location;//设置位置
ckBox.Location = oPoint;
ckBox.CheckedChanged += new EventHandler(ckBox_CheckedChanged);
dgv.Controls.Add(ckBox);
ckBox.Size = new Size(15, 15);
//ckBox.Text = "全选";
ckBox.Checked = true;
ckBox.BackColor = Color.FromArgb(0, 40, 60, 82); //设置背景透明
System.Drawing.Rectangle rect =
dgv.GetCellDisplayRectangle(0, -1, true); //获取位置
Rectangle oRectangle =dgv.GetCellDisplayRectangle(0, 0, true);
Point oPoint = new Point();
oPoint.X = 90 + (oRectangle.Width - ckBox.Width) / 2 + 1;
oPoint.Y = 10 + (oRectangle.Height - ckBox.Height) / 2 + 1;
//ckBox.Location = rect.Location;//设置位置
ckBox.Location = oPoint;
ckBox.CheckedChanged += new EventHandler(ckBox_CheckedChanged);
dgv.Controls.Add(ckBox);
#12
预估也行,但是要保证你第0列宽度不能变,否则就又偏了.
用8楼代码可以获取到列标题的位置和宽度,就别先获取单元格再硬套了