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

时间:2012-09-28 09:53:52

标签: winforms datagridview user-controls

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

我是数据绑定dgv,它的列集合远远超过可见宽度。

2 个答案:

答案 0 :(得分:0)

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

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

我添加了一个公共功能,如下所示:

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被放置在表单上,​​两个滚动条都显示出来。

我对DataGridViewUserControl所属的FormUserControl {{1}}的任何属性都没有做任何其他更改。我想知道你是否还有别的东西。

答案 1 :(得分:-1)

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

  dataGridView1.ScrollBars = ScrollBars.Both;