- shimix
- ぬし
- 会議室デビュー日: 2004/08/05
- 投稿数: 512
- お住まい・勤務地: 大分市
|
投稿日時: 2007-01-20 23:19
#確認(だけ)ですが・・
引用: |
| BBさんの書き込み (2007-01-20 23:10) より:
A@のDataGridViewの各セルの値に対して(1-3の値が入る)
1→red
2→yellow
3→green
を設定
|
この部分は
引用: |
| KIさんの書き込み (2007-01-20 15:33) より:
特定のセルの背景色を変えたいのなら、DefaultCellStyleではなく、
そのセル(DataGridViewCell)のBackColor, SelectionBackColorを
設定すべきではないでしょうか?
|
のとおり、BackColor, SelectionBackColorとも設定している・・ということでよろしいですか?
|
- BB
- ベテラン
- 会議室デビュー日: 2005/05/08
- 投稿数: 52
|
投稿日時: 2007-01-20 23:38
BackColor, SelectionBackColorとも設定している
という認識で問題ありません。
GUIのプロパティにて デフォルトではHighlightで設定されていますが
それを空白にしてもう一度開いてみるとHighlightが入ってしまうので。。。
|
- KI
- 大ベテラン
- 会議室デビュー日: 2007/01/10
- 投稿数: 239
|
投稿日時: 2007-01-21 10:49
私の理解能力が足りないのかも知れませんが、
処理についてではなく、実現したい動きがよくわかりませんので、
もう数点確認させてください。
バインドしたデータが、3列(仮にA列,B列,C列)あったとして、
そのうちのC列には必ず「red」「yeloow」「green」のいずれかの値が入る。
ここで、C列が「red」である行は(選択されていない状態のとき)
1. C列のセルのみ背景が赤色になる
2. 行全体の背景が赤色になる
のどちらでしょうか?
上の回答が1だとした場合、行のヘッダーをクリックして行を選択したとき、
その行の背景色の状態は
1. 選択前と同じ(C列は赤色で、他の列はデフォルトのハイライト表示の背景色)
2. C列を含めハイライト表示
のどちらでしょうか?
「DefulatCellStyle.SelectionBackColorが設定される」とかではなく、
動きとして、現状がこうで、現状のどこが問題(どうしたいか)を教えて頂きたいのです。
引用: |
|
GUIのプロパティにて デフォルトではHighlightで設定されていますが
それを空白にしてもう一度開いてみるとHighlightが入ってしまうので。。。
|
Designerファイルを直接編集してその行を消せば、できなくはないでしょうが、
それにより上記動作が実現できるとは思いません。
Colorは構造体(値型)ですので、設定しなくてもデフォルト値が入るだけだと思います。
|
- BB
- ベテラン
- 会議室デビュー日: 2005/05/08
- 投稿数: 52
|
投稿日時: 2007-01-21 22:47
>1. C列のセルのみ背景が赤色になる
>2. 行全体の背景が赤色になる
>のどちらでしょうか?
1.になります。
>1. 選択前と同じ(C列は赤色で、他の列はデフォルトのハイライト表示の背景色)
>2. C列を含めハイライト表示
>のどちらでしょうか?
2.になります。
やりたいこと
2.ではなく1.にしたいのです。
よろしくお願いいたします。
|
- KI
- 大ベテラン
- 会議室デビュー日: 2007/01/10
- 投稿数: 239
|
投稿日時: 2007-01-21 23:35
DataGridViewのRowsAddedイベントや、CellValueChangedイベントで、
該当セルのStyle.BackColor, Style.SelectionBackColorに
同じ色を設定すればよいと思います。
DefaultCellStyleは使用していませんが…こんな感じでどうでしょう?
コード: |
|
Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
'色を変える列のインデックスが1の場合
If e.RowIndex >= 0 AndAlso e.ColumnIndex = 1 Then
Dim cell As DataGridViewCell = DataGridView1(e.ColumnIndex, e.RowIndex)
Dim setColor As Color
'--------------------------------------
'ここでsetColorに設定したい色を設定する
'--------------------------------------
cell.Style.BackColor = setColor
cell.Style.SelectionBackColor = setColor
End If
End Sub
Private Sub DataGridView1_RowsAdded(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewRowsAddedEventArgs) Handles DataGridView1.RowsAdded
For i As Integer = 0 To e.RowCount - 1
'色を変える列のインデックスが1の場合
Dim cell As DataGridViewCell = DataGridView1(1, e.RowIndex + i)
Dim setColor As Color
'--------------------------------------
'ここでsetColorに設定したい色を設定する
'--------------------------------------
cell.Style.BackColor = setColor
cell.Style.SelectionBackColor = setColor
Next
End Sub
|
|
- BB
- ベテラン
- 会議室デビュー日: 2005/05/08
- 投稿数: 52
|
投稿日時: 2007-01-24 10:29
KI様
教えていただいた方法で解決することができました。
ありがとうございます。
やはりSelectionBackColorはなにか指定しないとまずいんですね。。。
勉強になりました。
|