在DataGridView中设置最后一行为冻结
本文关键字:一行 冻结 DataGridView 设置 最后 | 更新日期: 2023-09-27 18:09:13
我的网格目前有40行。一次只能显示20行,所以网格有一个滚动条。
我想冻结DataGridView的最后一行,但是滚动条消失了。如何解决这个问题?
您正在使用DataGridviewRow.Frozen
属性:请参阅这里的文档。
此属性允许您保留一行或几行重要的当用户滚动到DataGridView时,在适当的位置显示信息。所有
这实际上意味着,如果你"冻结"最后一行,冻结行上面的所有行也被冻结;这意味着滚动条因为你冻结了最后一行而被移除。
回答你的问题;您不能单独"冻结"仅最后一行,这不是Frozen
属性的性质。
在本文档中有一个解决方法。但是,它是用VB编写的,所以你必须自己把它翻译成c#。
实际上进一步寻找我发现这个文档,其中有一个c#的小例子。它似乎有bug,但可能会让你朝着你的目标前进。
public partial class MyDataGridView : DataGridView
{
public StatusStrip Footer
{
get { return (StatusStrip)this.Controls["Footer"]; }
}
private bool _footerVisible;
[Browsable(false)]
///
/// Sets or Gets the value specifying if a footer bar is shown or not
///
public bool FooterVisible
{
get { return _footerVisible; }
set
{
_footerVisible = value;
this.Controls["Footer"].Visible = _footerVisible;
}
}
public MyDataGridView()
{
InitializeComponent();
StatusStrip footer = new StatusStrip();
footer.Name = "Footer";
footer.ForeColor = Color.Black;
this.Controls.Add(footer);
((StatusStrip)this.Controls["Footer"]).Visible = _footerVisible;
((StatusStrip)this.Controls["Footer"]).VisibleChanged += new EventHandler(RDataGridView_VisibleChanged);
this.Scroll += new ScrollEventHandler(RDataGridView_Scroll);
_footerItems = ((StatusStrip)this.Controls["Footer"]).Items;
}
}
上述代码可以用作用户控件,并继承自DataGridView
。然后添加一个页脚,您可以用您选择的最后一行填充。如果您将所有行的Frozen
属性设置为False,则滚动条仍然可见。