.net - Winforms DataGridView 水平滚动条

标签 .net winforms datagridview scrollbar

是否有可能在 Windows Forms 2.0 中永久显示 DataGridView 的水平滚动条。就像我们可以在面板的水平滚动条中做的那样。

目前Horizo​​ntal 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/

相关文章:

c# - “Wait Please”表单隐藏主表单

VB.Net 将 datagridview Comboboxcolumn 绑定(bind)到 datagridviewTextboxColumn

vb.net - Datagridview - 专注于右键单击的单元格

c# - 使用 DataGridViewCheckBoxColumn 更新 DatagridView

c# - 在 OpenFileDialog 中使用 DialogResult.OK 时出错

.net - (设置和部署)创建文件夹并重命名目标文件夹

c# - 将 generatePublisherEvidence false 设置为默认值

c# - 将窗口置于最前面

c# - 绘制控件时翻转坐标

c# - Powershell:无法与 .Net 程序集中存储的表单交互