当前位置: 首页 > 编程语言 > C#

如何在winforms应用程序中设置数据网格滚动条的位置?分享

时间:2023-04-11 01:52:53 C#

winforms应用程序中如何设置数据网格滚动条的位置?在我的C#winforms应用程序中,我有一个数据网格。当数据网格重新加载时,我想将滚动条设置回用户设置的位置。我怎样才能做到这一点?编辑:我使用的是旧的winformsDataGrid控件,而不是较新的DataGridView您实际上并没有直接与滚动条交互,而是设置了FirstDisplayedScrollingRowIndex。因此,在重新加载之前,捕获该索引,并在重新加载后将其重置为该索引。编辑:评论中的要点。如果您使用的是DataGridView,那么这将起作用。如果您使用旧的DataGrid,那么最简单的方法就是继承它。请参阅此处:ContactDataGrid有一个受保护的GridVScrolled方法,可用于将网格滚动到特定行。要使用它,从DataGrid派生一个新的网格并添加一个ScrollToRow方法。C#代码publicvoidScrollToRow(inttheRow){////公开受保护的GridVScrolled方法,允许您//以编程方式将网格滚动到特定行。//if(DataSource!=null){GridVScrolled(this,newScrollEventArgs(ScrollEventType.LargeIncrement,theRow));}}是的,绝对是FirstDisplayedScrollingRowIndex。您需要在一些用户交互后捕获此值,然后在网格重新加载后,您需要将其设置回旧值。例如,如果通过单击按钮触发重新加载,则在按钮单击处理程序中,您可能希望将第一行作为将此值放入变量的命令://GetcurrentuserscrollpositionintscrollPosition=myGridView.FirstDisplayedScrollingRowIndex;//做一些工作...//重新绑定网格并重置滚动myGridView.DataBind;myGridView.FirstDisplayedScrollingRowIndex=scrollPosition;刚刚在BFree给出的链接上发布了答案DataGrid有一个受保护的GridVScrolled方法,可用于将网格滚动到特定行。要使用它,从DataGrid派生一个新的网格并添加一个ScrollToRow方法。C#代码publicvoidScrollToRow(inttheRow){////公开受保护的GridVScrolled方法,允许您//以编程方式将网格滚动到特定行。//if(DataSource!=null){GridVScrolled(this,newScrollEventArgs(ScrollEventType.LargeIncrement,theRow));}}VB.NET代码PublicSubScrollToRow(ByValtheRowAsInteger)''公开受保护的GridVScrolled方法,允许您'以编程方式将网格滚动到特定行。'OnErrorResumeNextIfNotDataSourceIsNothingThenGridVScrolled(Me,NewScrollEventArgs(ScrollEventType.LargeIncrement,theRow))EndIfEndSub将垂直和水平滚动值存储到某个变量中并重置它们。intv=dataGridView1.VerticalScrollingOffset;inth=dataGridView1.Horizo??ntalScrollingOffset;//...重新加载dataGridView1.VerticalScrollingOffset=v;dataGridView1.Horizo??ntalScrollingOffset=h;我使用@BFree的答案,但还需要捕获DataGrid的第一个可见行:intindexOfTopMostRow=HitTest(dataGrid.RowHeaderWidth+10,dataGrid.PreferredRowHeight+10).Row;尽管这是一个老问题,但上面的许多解决方案都不适合我。终于奏效的是:以上是C#学习教程:如何在winforms应用程序中设置数据网格滚动条的位置?所有分享的内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——if(gridEmployees.FirstDisplayedScrollingRowIndex!=-1)gridEmployees.FirstDisplayedScrollingRowIndex=0;本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: