You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:59:07