WinForms中DataGridView表头冻结实现方法及代码失效咨询
WinForms DataGridView 表头冻结问题解答
Q2:WinForms应用程序中是否可以冻结DataGridView的表头?
当然可以!WinForms的DataGridView控件原生就支持表头冻结的功能,根本不需要额外引入第三方组件或者复杂的自定义逻辑——只是你之前用的代码方向错了而已😉
Q1:如何冻结DataGridView的表头?
你之前尝试的results_grid.Rows(0).Frozen = True是用来冻结第一行数据的,不是控件原生的表头(列标题行),所以才会无效。下面分两种情况给你解决方案:
情况1:使用DataGridView原生列标题(推荐)
如果你是用控件自带的列标题(也就是通过Columns集合设置HeaderText的方式),那表头默认就是纵向滚动时固定在顶部的,不需要写任何代码。如果发现表头没有固定,检查下这两个设置:
- 确保
ColumnHeadersVisible属性设为True(默认就是) - 不要把
DataGridView的ScrollBars设为None,否则滚动功能本身就失效了
如果需要横向滚动时固定指定列的表头和列内容,可以针对列设置冻结:
' 冻结第一列(包括它的表头),横向滚动时不会移动 results_grid.Columns(0).Frozen = True
情况2:手动用第一行数据作为表头
如果你没有用原生列标题,而是把表头内容放在了第一行数据里,那这时候需要冻结这一行数据来模拟表头固定,这时候你的代码需要调整下生效条件:
' 确保允许冻结行(默认允许) results_grid.AllowUserToFreezeRows = True ' 冻结第一行数据 results_grid.Rows(0).Frozen = True ' 建议关闭自动新增行,避免干扰表头行 results_grid.AllowUserToAddRows = False
设置后,纵向滚动时第一行(你的自定义表头)会固定在顶部,不会跟着滚动。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

