【问题标题】:Why is the horizontal scrollbar missing on my DataGridView?为什么我的 DataGridView 上缺少水平滚动条?
【发布时间】:2021-06-02 14:38:09
【问题描述】:

我有一个UserControl,只包含一个DataGridView,设置为停靠以填充UserControl。 dgv 的ScrollBars 属性设置为Both,但是当我将dgv 动态加载到客户端表单的面板中时,没有显示水平滚动条。我找到了这个问题,但我的专栏都没有被冻结。我的滚动条在哪里?

我正在绑定 dgv 的数据,它的列集合远远超出了可见宽度。

【问题讨论】:

    标签: winforms datagridview user-controls


    【解决方案1】:

    所以我的简单示例可以很好地自动显示滚动条。这是我所做的:

    我有一个UserControl,其中只有一个DataGridViewDock 设置为Full

    我添加了一个公共函数,如下所示:

    public void SetBinding(object theSource)
    {
        dataGridView1.DataSource = theSource;
    }
    

    只是为了针对我的数据源设置绑定。

    我的测试表格非常简单,看起来像这样:

    public partial class Form1 : Form
    {
        BindingSource bs = new BindingSource();
        List<Stuff> list = new List<Stuff>();
    
        public Form1()
        {
            InitializeComponent();
            BindSomeStuff();
        }
    
        private void BindSomeStuff()
        {
            for (int i = 0; i < 50; ++i)
            {
                list.Add(new Stuff
                {
                    Column1 = i.ToString() + "Column1 Data",
                    Column2 = i.ToString() + "Column2 Data",
                    Column3 = i.ToString() + "Column3 Data",
                    Column4 = i.ToString() + "Column4 Data",
                    Column5 = i.ToString() + "Column5 Data",
                    Column6 = i.ToString() + "Column6 Data",
                    Column7 = i.ToString() + "Column7 Data",
                    Column8 = i.ToString() + "Column8 Data",
                }
                );
            }
            bs.DataSource = list;
            userControl11.SetBinding(bs);
        }
    }
    

    然后有一个简单的类来保存一些看起来像这样的虚拟数据:

    public class Stuff
    {
        public string Column1 { get; set; }
        public string Column2 { get; set; }
        public string Column3 { get; set; }
        public string Column4 { get; set; }
        public string Column5 { get; set; }
        public string Column6 { get; set; }
        public string Column7 { get; set; }
        public string Column8 { get; set; }
    }
    

    我的UserControl 被放置在表单上,​​并且两个滚动条都出现了。

    我没有对 DataGridView、它所属的 UserControl 或拥有 UserControlForm 的任何属性进行任何其他更改。我想知道你是否有其他我没有设置的东西。

    【讨论】:

    • 原来我必须将UserControl 停靠在我加载它的面板中。
    • 应该没关系。我的示例没有停靠用户控件,但我很高兴你已经修复了它。
    【解决方案2】:

    在这种情况下 UserControl + DataGridView + 缺少水平滚动条 只需在 DataGridView 的列编辑器中为每一列设置Frozen = false。 是的,

      dataGridView1.ScrollBars = ScrollBars.Both;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多