是否有可能在 Windows Forms 2.0 中永久显示 DataGridView 的水平滚动条。就像我们可以在面板的水平滚动条中做的那样。
目前Horizontal ScrollBar仅在列宽总和大于DataGridView宽度时可见。但我希望这个滚动条始终可见。
谢谢
最佳答案
正如在评论中提到的,DataGridView 控制它的滚动条,并且总是希望在不需要查看它们时隐藏它们,例如所有单元格都适合网格的可见区域。
但是,有一种方法可以强制 DataGridView 使用反射显示其滚动条,尽管这是一种 hack,我不建议这样做。下面是一个例子:
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);
}
}
希望这对你有帮助,问候
关于.net - Winforms DataGridView 水平滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5289820/