Winforms 为什么我的DataGridView上缺少水平滚动条?

Winforms 为什么我的DataGridView上缺少水平滚动条?,winforms,datagridview,user-controls,Winforms,Datagridview,User Controls,我有一个UserControl,它只包含一个DataGridView,设置为停靠以填充UserControl。dgv的滚动条属性设置为两者,但当我将dgv动态加载到客户端窗体上的面板中时,不会显示水平滚动条。我找到了这个问题,但我的专栏没有一篇被冻结。我的滚动条在哪里 我正在对dgv进行数据绑定,它的列集合远远超过了可见宽度。因此,我的简单示例可以很好地自动显示滚动条。以下是我所做的: 我有一个UserControl,其中只有一个DataGridView,Dock设置为Full 我添加了一个公共

我有一个
UserControl
,它只包含一个
DataGridView
,设置为停靠以填充
UserControl
。dgv的
滚动条
属性设置为
两者
,但当我将dgv动态加载到客户端窗体上的面板中时,不会显示水平滚动条。我找到了这个问题,但我的专栏没有一篇被冻结。我的滚动条在哪里


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

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

我有一个
UserControl
,其中只有一个
DataGridView
Dock
设置为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 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);
    }
}
My
UserControl
被放置在表单上,两个滚动条都会显示出来


我没有对
DataGridView
、它所属的
UserControl
或包含
UserControl
表单的任何属性进行任何其他更改。我想知道您是否有我没有的其他设置。

在这个场景中UserControl+DataGridView+缺少的水平滚动条 只需在DataGridView的列编辑器中为每列设置
freezed=false
。 是的


事实证明,我必须将
UserControl
停靠在我加载到的面板中。这不重要。我的示例没有停靠用户控件,但我很高兴您已经修复了它。