【问题标题】:VB.NET Format row font in DataGridViewerDataGridView中的VB.NET格式行字体
【发布时间】:2017-09-24 18:41:09
【问题描述】:

我正在将 datagridview 绑定到对象列表(报告)

    DataGridView2.DataSource = Report

因为我这样做了,所以所有行的文本格式都是相同的。

有没有办法格式化表格中的特定行?例如,我希望第 1 行的文本以粗体显示,其余行默认为正常。

非常感谢

【问题讨论】:

  • 你说“比如我想让第1行的文字加粗,其余行正常”...理论上可见的第1行可能是许多行之一。例如,顶部可见行(第 1 行?)将其字体设置为粗体,然后用户向下滚动到足以使顶部行向上滚动到网格的可见部分之外。您是否只希望第一个可见行保持粗体?我没有完全遵循什么条件,哪一行应该是粗体。

标签: .net vb.net datagridview datagrid datagridviewcolumn


【解决方案1】:

就像列一样,DataGridView 中的一行有一个DefaultCellStyleDataGridViewCellStyle 具有 Font 属性,您可以使用适当的 Style 设置将其设置为 Font,例如

Dim cellStyle = myDataGridViewRow.DefaultCellStyle
Dim font = cellStyle.Font

cellStyle.Font = New Font(font, font.Style Or FontStyle.Bold)

编辑:我已经意识到,如果您还没有为该行明确设置Font,那么该代码将会失败。如果每个单元格都从网格继承其样式,那么您也需要从网格中获取字体:

Dim font = myDataGridView.DefaultCellStyle.Font

myDataGridViewRow.DefaultCellStyle.Font = New Font(font, font.Style Or FontStyle.Bold)

【讨论】:

  • 这个解决方案会改变表格中所有单元格的字体,而不仅仅是一行。
  • 除非它不会。
  • @NTC ti 会,但首先你需要从 datagriview 获取第一行:myDataGridViewRow = yourDataGridView.Rows(0) 并且因为 DataGridView 可能没有任何行,你需要先检查之前是否有任何行按索引访问第一行
  • @Fabio,我不确定您是否输入错误,但它不会更改网格中每个单元格的字体。它只会更改myDataGridViewRow 引用的行中单元格的字体。您如何获得该参考以及哪一行取决于您。
  • @jmcilhinney,OP 的问题是关于如何更改特定行的格式 - 有没有办法格式化表格中的特定行?。字体仅用作需要在该行中更改的属性示例。因此,通过说 您如何获得该参考以及由您决定哪一行 - 您忽略了主要问题并只关注字体,这对于这个问题并不重要
【解决方案2】:

如果行索引为 0,您可以使用DataGridView.CellFormatting 事件并更改每个单元格的样式。

Private Sub YourDataGridView_CellFormatting(sender AS Object, 
                                            e As DataGridViewCellFormattingEventArgs)
    If e.RowIndex <> 0 Then Exit Sub

    ' Use e.CellStyle for formatting a cell
    e.CellStyle.BackColor = Color.Grey;
    e.CellStyle.Font = yourFontForFirstRow
End Sub

请注意,每次绘制控件时都会发生DataGridView.CellFormatting 事件,因此您需要小心,不要在该事件中执行“重”逻辑。 DataGridView.CellFormatting Event

【讨论】:

  • 我尝试了你的方法,但它不起作用,单元格样式没有任何变化。
  • @N.T.C - 您是通过在构造函数中使用 AddHandler yourDataGridView.CellFormatting, AddressOf YourDataGridView_CellFormatting 还是在方法声明中添加 Handles yourDataGridView.CellFormatting 来订阅事件?
猜你喜欢
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多