【发布时间】:2017-08-15 23:01:06
【问题描述】:
我正在尝试自定义 DataGridView 类以在所有行下方都有一个按钮。
到目前为止,我已经向 DataGridView.Controls 添加了一个按钮。
此按钮的位置是在每个添加/删除行、DataGridView 调整大小和滚动时计算的。
这可行,但是有一个问题。在 DataGridView 调整大小或滚动时,当 DataGridView 的底部边缘直接位于最后一行下方时,按钮完全不可见或仅部分不可见。
有没有办法让按钮始终可见?
我尝试设置滚动条位置和 FirstDisplayedScrollingRowIndex。这不起作用。 不幸的是,这个项目不可能添加一个全新的行。
添加按钮:
buttonAddRow.Height = 17;
buttonAddRow.Text = "+";
buttonAddRow.FlatStyle = FlatStyle.System;
buttonAddRow.Font = new Font(buttonAddRow.Font.FontFamily, 6.75F);
buttonAddRow.Click += ButtonAddRow_Click;
dataGridView.Controls.Add(buttonAddRow);
还有地点:
private void setLocation()
{
if (dataGridView.FirstDisplayedCell != null)
{
int positionY = 0;
positionY += dataGridView.ColumnHeadersHeight;
var visibleRowsCount = dataGridView.DisplayedRowCount(true);
var firstDisplayedRowIndex = dataGridView.FirstDisplayedCell.RowIndex;
var lastvisibleRowIndex = (firstDisplayedRowIndex + visibleRowsCount) - 1;
for (int rowIndex = firstDisplayedRowIndex; rowIndex <= lastvisibleRowIndex; rowIndex++)
{
positionY += dataGridView.Rows[rowIndex].Height;
}
buttonAddRow.Location = new Point(dataGridView.ClientRectangle.X, dataGridView.ClientRectangle.Y + positionY);
buttonAddRow.Visible = true;
}
}
【问题讨论】:
-
按钮必须在最后一个网格行下或网格底部?
-
你不需要把DataDridView弄高一点吗?
-
好吧,你怎么能在最后一行下面显示按钮???如果您的 dgv 充满了行,这似乎不合逻辑.. 可能的解决方法:使最后一行是正常高度的两倍..
-
@Ash - 在最后一个网格行下。如果只有几行,则垂直滚动不可见,最后一行是例如在网格的中间,按钮也会在网格的中间。
-
@stuartd - 如果我让网格更高,将显示下一个未显示的 FirstDisplayedRow 行,并且按钮也会向下。如果我可以增加 DataGridView 底部边缘和最后一行之间的空间,这将起作用。不幸的是,我没有找到方法。
标签: c# .net winforms datagridview