PowerShell中DataGridView行标题显示限制及索引循环问题求助
PowerShell WinForms DataGridView行头显示问题解决
问题1:行头单元格仅显示10个字符
默认DataGridView行头宽度有限,超出内容会被截断,通过调整行头宽度适配模式解决:
# 自动适配所有行头内容的宽度 $DataGridView.RowHeadersWidthSizeMode = [System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode]::AutoSizeToAllHeaders # 也可手动设置固定宽度(按需调整数值) # $DataGridView.RowHeadersWidth = 80
问题2:行索引编号仅显示1-9后重置
直接遍历Rows设置HeaderCell.Value的方式,在动态添加行(如绑定数据源)时易因索引未同步、事件触发顺序问题导致编号异常。改用RowPostPaint事件绘制行号更可靠:
# 注册RowPostPaint事件绘制行号 $DataGridView.add_RowPostPaint({ param($sender, $e) # 行号从1开始计数 $rowNumber = $e.RowIndex + 1 $headerCell = $sender.Rows[$e.RowIndex].HeaderCell # 设置居中绘制格式 $drawFormat = [System.Drawing.StringFormat]@{ Alignment = [System.Drawing.StringAlignment]::Center LineAlignment = [System.Drawing.StringAlignment]::Center } # 绘制行号到行头区域 $e.Graphics.DrawString( $rowNumber.ToString(), $sender.Font, [System.Drawing.Brushes]::Black, $headerCell.ContentBounds, $drawFormat ) })
补充说明
如果坚持用遍历方式设置行号,需确保在所有行添加完成后一次性执行,不要在RowAdded事件中重复调用遍历代码,否则会引发索引重复问题。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

