DataGridViewRowPostPaintEventHandler デリゲート
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

Public Delegate Sub DataGridViewRowPostPaintEventHandler ( _ sender As Object, _ e As DataGridViewRowPostPaintEventArgs _ )
public delegate void DataGridViewRowPostPaintEventHandler ( Object sender, DataGridViewRowPostPaintEventArgs e )
public delegate void DataGridViewRowPostPaintEventHandler ( Object^ sender, DataGridViewRowPostPaintEventArgs^ e )
/** @delegate */ public delegate void DataGridViewRowPostPaintEventHandler ( Object sender, DataGridViewRowPostPaintEventArgs e )

DataGridViewRowPostPaintEventHandler デリゲートを作成する場合は、イベントを処理するメソッドを識別してください。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「イベントとデリゲート」を参照してください。

標準のセル値を下回る行全体にわたるテキストの内容を描画する DataGridViewRowPostPaintEventHandler デリゲートを次のコード例に示します。次のコード例は、「方法 : Windows フォームの DataGridView コントロールの行の外観をカスタマイズする」で示されている例の一部です。
' Paints the content that spans multiple columns and the focus rectangle. Sub dataGridView1_RowPostPaint(ByVal sender As Object, _ ByVal e As DataGridViewRowPostPaintEventArgs) _ Handles dataGridView1.RowPostPaint ' Calculate the bounds of the row. Dim rowBounds As New Rectangle(Me.dataGridView1.RowHeadersWidth, _ e.RowBounds.Top, Me.dataGridView1.Columns.GetColumnsWidth( _ DataGridViewElementStates.Visible) - _ Me.dataGridView1.HorizontalScrollingOffset + 1, e.RowBounds.Height) Dim forebrush As SolidBrush = Nothing Try ' Determine the foreground color. If (e.State And DataGridViewElementStates.Selected) = _ DataGridViewElementStates.Selected Then forebrush = New SolidBrush(e.InheritedRowStyle.SelectionForeColor) Else forebrush = New SolidBrush(e.InheritedRowStyle.ForeColor) End If ' Get the content that spans multiple columns. Dim recipe As Object = _ Me.dataGridView1.Rows.SharedRow(e.RowIndex).Cells(2).Value If Not (recipe Is Nothing) Then Dim text As String = recipe.ToString() ' Calculate the bounds for the content that spans multiple ' columns, adjusting for the horizontal scrolling position ' and the current row height, and displaying only whole ' lines of text. Dim textArea As Rectangle = rowBounds textArea.X -= Me.dataGridView1.HorizontalScrollingOffset textArea.Width += Me.dataGridView1.HorizontalScrollingOffset textArea.Y += rowBounds.Height - e.InheritedRowStyle.Padding.Bottom textArea.Height -= rowBounds.Height - e.InheritedRowStyle.Padding.Bottom textArea.Height = (textArea.Height \ e.InheritedRowStyle.Font.Height) * _ e.InheritedRowStyle.Font.Height ' Calculate the portion of the text area that needs painting. Dim clip As RectangleF = textArea clip.Width -= Me.dataGridView1.RowHeadersWidth + 1 - clip.X clip.X = Me.dataGridView1.RowHeadersWidth + 1 Dim oldClip As RectangleF = e.Graphics.ClipBounds e.Graphics.SetClip(clip) ' Draw the content that spans multiple columns. e.Graphics.DrawString(text, e.InheritedRowStyle.Font, forebrush, _ textArea) e.Graphics.SetClip(oldClip) End If Finally forebrush.Dispose() End Try If Me.dataGridView1.CurrentCellAddress.Y = e.RowIndex Then ' Paint the focus rectangle. e.DrawFocus(rowBounds, True) End If End Sub 'dataGridView1_RowPostPaint
// Paints the content that spans multiple columns and the focus rectangle. void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { // Calculate the bounds of the row. Rectangle rowBounds = new Rectangle( this.dataGridView1.RowHeadersWidth, e.RowBounds.Top, this.dataGridView1.Columns.GetColumnsWidth( DataGridViewElementStates.Visible) - this.dataGridView1.HorizontalScrollingOffset + 1, e.RowBounds.Height); SolidBrush forebrush = null; try { // Determine the foreground color. if ((e.State & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected) { forebrush = new SolidBrush(e.InheritedRowStyle.SelectionForeColor); } else { forebrush = new SolidBrush(e.InheritedRowStyle.ForeColor); } // Get the content that spans multiple columns. object recipe = this.dataGridView1.Rows.SharedRow(e.RowIndex).Cells[2].Value; if (recipe != null) { String text = recipe.ToString(); // Calculate the bounds for the content that spans multiple // columns, adjusting for the horizontal scrolling position // and the current row height, and displaying only whole // lines of text. Rectangle textArea = rowBounds; textArea.X -= this.dataGridView1.HorizontalScrollingOffset; textArea.Width += this.dataGridView1.HorizontalScrollingOffset; textArea.Y += rowBounds.Height - e.InheritedRowStyle.Padding.Bottom; textArea.Height -= rowBounds.Height - e.InheritedRowStyle.Padding.Bottom; textArea.Height = (textArea.Height / e.InheritedRowStyle.Font.Height) * e.InheritedRowStyle.Font.Height; // Calculate the portion of the text area that needs painting. RectangleF clip = textArea; clip.Width -= this.dataGridView1.RowHeadersWidth + 1 - clip.X; clip.X = this.dataGridView1.RowHeadersWidth + 1; RectangleF oldClip = e.Graphics.ClipBounds; e.Graphics.SetClip(clip); // Draw the content that spans multiple columns. e.Graphics.DrawString( text, e.InheritedRowStyle.Font, forebrush, textArea); e.Graphics.SetClip(oldClip); } } finally { forebrush.Dispose(); } if (this.dataGridView1.CurrentCellAddress.Y == e.RowIndex) { // Paint the focus rectangle. e.DrawFocus(rowBounds, true); } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- DataGridViewRowPostPaintEventHandler デリゲートのページへのリンク