我有这个问题:我需要在..TextBox
的列标题上放一个,DataGridView
以便找到该标题,然后开始阅读列的矩形以检索左侧位置和宽度。
Rectangle rec = dgv.GetColumnDisplayRectangle(mycolumnIndex, true);
并且工作正常,但如果网格不包含任何行,Rectangle
则为0。
有任何想法吗?
谢谢
无论是否有任何行或是否有选定的行,对于任何可见列,Rectangle
从那里返回的GetColumnDisplayRectangle
值总是正确的。
如果Empty
适合您,则您Column
是不可见的或滚动到显示区域之外。
在和事件之后,您将需要设置您TextBox
或Control
您在此处放置的任何内容的位置。同样,无论何时隐藏或显示“列”。ColumnWidthChanged
Scroll
这是一个工作示例:
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Parent = dataGridView1; // nest the TextBox
placeControl(dataGridView1, textBox1, 2); // place it over the 3rd column header
}
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
placeControl(dataGridView1, textBox1, 2);
}
private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
placeControl(dataGridView1, textBox1, 2);
}
void placeControl(DataGridView dgv, Control ctl, int index)
{
Rectangle R = dgv.GetColumnDisplayRectangle(index, true ); // or false
ctl.Location = R.Location;
ctl.Size = new Size(R.Width, dgv.ColumnHeadersHeight);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句