是否可以在Windows Forms 2.0中显示永久 DataGridView的水平滚动条。就像我们可以在Panel的水平滚动条中那样。
目前,只有当列的宽度总和大于DataGridView宽度时,水平ScrollBar才可见。但我希望这个滚动条始终可见。
由于
答案 0 :(得分:2)
正如在评论中提到的那样,DataGridView控制其滚动条,并且如果不需要查看滚动条,则总是想隐藏它们,例如所有细胞都适合网格的可见区域。
但是,有一种方法可以强制DataGridView使用反射显示其滚动条,虽然它是一个黑客,我不建议这样做。以下是一个例子:
public Form1()
{
InitializeComponent();
// assuming dataGridView1 is a DataGridView control placed on the Form1 form
PropertyInfo property = dataGridView1.GetType().GetProperty(
"HorizontalScrollBar", BindingFlags.NonPublic | BindingFlags.Instance);
if (property != null)
{
ScrollBar scrollbar = (ScrollBar)property.GetValue(dataGridView1, null);
scrollbar.Visible = true;
scrollbar.VisibleChanged += new EventHandler(ScrollBar_VisibleChanged);
}
}
void ScrollBar_VisibleChanged(object sender, EventArgs e)
{
FieldInfo field = dataGridView1.GetType().GetField(
"layout", BindingFlags.NonPublic | BindingFlags.Instance);
if (field != null)
{
object layoutData = field.GetValue(dataGridView1);
FieldInfo insideField = layoutData.GetType().GetField(
"Inside", BindingFlags.Public | BindingFlags.Instance);
Rectangle rect = (Rectangle)insideField.GetValue(layoutData);
ScrollBar scrollBar = (ScrollBar)sender;
scrollBar.Visible = true;
scrollBar.SetBounds(
rect.Left, rect.Height - scrollBar.Height + 1,
rect.Width, scrollBar.Height);
}
}
希望这有帮助,尊重