0

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

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

4

2 回答 2

-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; }
}

MyUserControl被放置在表单上,​​两个滚动条都出现了。

我没有对任何东西的任何属性进行任何其他更改DataGridViewUserControl它是它的一部分或Form拥有它的东西UserControl。我想知道你是否有其他我没有的设置。

于 2012-09-28T11:31:27.700 回答
-1

在这种情况下UserControl + DataGridView + 缺少 Horizo​​ntal ScrollBar 只需Frozen = false为每一列设置 DataGridView 的列内编辑器。是的,

  dataGridView1.ScrollBars = ScrollBars.Both;
于 2021-06-02T06:26:23.550 回答