我的UserControl
仅包含DataGridView
,设置为停靠以填充UserControl
。 dgv的ScrollBars
属性设置为Both
,但是当我将dgv动态加载到客户端表单上的面板时,不会显示水平滚动条。我发现了这个问题,但我的列都没有冻结。我的滚动条在哪里?
我是数据绑定dgv,它的列集合远远超过可见宽度。
答案 0 :(得分:0)
所以我的简单示例可以自动显示滚动条。这是我做的:
我有一个UserControl
,其中只有DataGridView
,Dock
设置为完整。
我添加了一个公共功能,如下所示:
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
所属的Form
或UserControl
{{1}}的任何属性都没有做任何其他更改。我想知道你是否还有别的东西。
答案 1 :(得分:-1)
在这种情况下UserControl + DataGridView + 缺少水平滚动条
只需在 DataGridView 的列编辑器中为每列设置 Frozen = false
。
是的,
dataGridView1.ScrollBars = ScrollBars.Both;