|
分類:[VB.NET/VB2005 以降]
Visual Studio2022 で DatagridViewでスケジュール管理のようなものを作成しています。
COL_A --期間 COL_1〜COL_90 --当月1日から90日 COL_SDATE --開始日 COL_EDATE --終了日 以上の項目でDatagridViewを作成します。
COL_SDATEとCOL_EDATEは非表示です。 COL_AにはCOL_SDATEとCOL_EDATEで入力された日付が編集されています。
CellPaintingで開始日〜終了日まで線を引きたいのですが、COL_SDATEを表示にし対象項目とすると 描画できますが、COL_Aを対象項目にすると描画されません。 描画したいセルはCOL_1〜COL_90なのになぜ描画されないのか教えていただけますでしょうか。 よろしくお願いいたします。
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ''' <summary>グラフの色付け。</summary> Private Sub DgvDaTa_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DgvData.CellPainting
If e.ColumnIndex < 0 OrElse e.RowIndex < 0 Then Exit Sub
If e.ColumnIndex = DgvData.Columns("COL_SDATE").Index Then Dim _row As DataGridViewRow = DgvData.Rows(e.RowIndex)
Dim _sDate As DateTime = _row.Cells("COL_SDATE").Value '--開始日 Dim _eDate As DateTime = _row.Cells("COL_EDATE").Value '--終了日 Dim _col As Integer = DateDiff(DateInterval.Day, _dtNow, _sDate) Dim _cellRect As Rectangle = DgvData.GetCellDisplayRectangle(DgvData.Columns($"COL_{_col:00}").Index, e.RowIndex, True)
Dim _width As Single = _cellRect.Width * (DateDiff(DateInterval.Day, _sDate, _eDate) + 1) Dim newRect As RectangleF = New RectangleF(_cellRect.X, _cellRect.Y, _width, _cellRect.Height)
e.Graphics.FillRectangle(Color.Red, newRect) End If
End Su
|