掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DataGridViewで行のラインの色を変えるには? (ID:145659)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 者が出しているコードが RowPostPaint なのでそのまま あぅ。修正前の文章の方を投稿してしまいました。。。(;_;) 突っ込み大感謝。>特攻隊長まるるうさん でも今更、長文の再投稿をしても鬱陶しいですよね…。 とりあえず、Pre/Post どちらのイベントを使っているにしても、 スクロール時のイベントの発生順の話や、その後に書いた >> また、他の行に対して描画してしまうと意味がないので、 という問題点は一緒なので、先の発言を適当に読み替えてください。(泣) 要は、上の行位置に描画しているのが原因ということです。 1) RowIndex = 2 のRowPrePaint 2) RowIndex = 2 のコンテンツ 3) RowIndex = 2 のRowPostPaint 4) RowIndex = 3 のRowPrePaint 5) RowIndex = 3 のコンテンツ 6) RowIndex = 3 のRowPostPaint と発生する処理の中で、それに対して、提示されたコードでは 手順6 で RowIndex = 2 に描画(元質問) 手順4 で RowIndex = 2 に描画(私の読み違い投稿) となっていましたが、それを 修正案1:手順 3 で、RowIndex = 2 に描画 修正案2:手順 6 で、RowIndex = 3 に描画 のいずれかに修正しましょう、という事になります。 > デフォルトでセルの高さが 21 っぽいから、サンプルと合わせて 問題は、どのセルの高さを意図しているのか、という点になりますね。 fumofumo さんの書かれた >> Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 22 の「22」が、もしも「現在行の高さ e.RowBounds.Height(初期値 21)」を 意図しているのだとしたら、そのコードは Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - e.RowBounds.Height - 1 という事になります。 しかし、それならば最初から、 Dim startY As Integer = e.RowBounds.Top - 1 と書くでしょうから、e.RowBounds.Height の可能性は排除して考えました。 そして近い値として、列ヘッダの高さ dgv.ColumnHeadersHeight(初期値 23) があるので、 Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - dgv.ColumnHeadersHeight + 1 の意図で書いたという可能性を思いついたのですが、いずれにしても、 fumofumo さんのコードの意図が不明瞭であったため、恐らく誤記であろうと類推し、 > また、そもそも「22」とは、何を意味する値なのでしょうか。 という逆質問をした次第です。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.