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);
}
}
MyUserControl
被放置在表单上,两个滚动条都会显示出来
我没有对
DataGridView
、它所属的UserControl
或包含UserControl
的表单的任何属性进行任何其他更改。我想知道您是否有我没有的其他设置。在这个场景中UserControl+DataGridView+缺少的水平滚动条
只需在DataGridView的列编辑器中为每列设置freezed=false
。
是的
事实证明,我必须将UserControl
停靠在我加载到的面板中。这不重要。我的示例没有停靠用户控件,但我很高兴您已经修复了它。