- PR -

DataGridViewで編集中のセルの背景色とテキストカラーを変えたい

1
投稿者投稿内容
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-06-06 14:51
VB2005です。
デフォルトだとセルを選択して編集状態にすると、背景色はHighlight、テキストのカラーはHighlightTextですよね。
これをセルを選択したときは、背景色はHighlight、テキストのカラーはHighlightTextのままで
セルを編集状態にしたとき、背景色をBlue、テキストのカラーはRed(あくまで例です)にしたいと思っています。

コード:
        DataGridView1.DefaultCellStyle.SelectionBackColor = Color.Blue
        DataGridView1.DefaultCellStyle.SelectionForeColor = Color.Red


上記のコードで選択中のセルの背景色とテキストカラーは変更できるのですが
セルを編集状態にすると、背景色はHighlight、フォントのカラーはHighlightTextになってしまいます。

編集状態のセルスタイル(背景色とテキストカラー)を変更することは可能なのでしょうか?
ふりっつ
会議室デビュー日: 2007/11/18
投稿数: 15
投稿日時: 2008-06-09 21:28
現在選択中のセルの背景色と文字色を変更するのであれば、DefaultCellStyleではなくCurrentCell.StyleのBackColorとForeColorを設定すれば実装できます。
処理手順としては、DataGridViewのBeginEditメソッドでCurrentCell.Styleの背景色と文字色を設定し、EndEditメソッドで元の背景色と文字色に戻せば良いです。

chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-06-09 23:42
ふりっつさんありがとうございます。
DataGridViewのCellBeginEditメソッドとCellEndEditメソッド内に

コード:

Private Sub DataGridView_CellBeginEdit(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) _
Handles DataGridView.CellBeginEdit

Dim colorX As Integer = DataGridView.CurrentCellAddress.X
Dim colorY As Integer = DataGridView.CurrentCellAddress.Y

DataGridView(colorX, colorY).Style.BackColor = Color.Blue
DataGridView(colorX, colorY).Style.ForeColor = Color.Red

End Sub


Private Sub DataGridView_CellEndEdit(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGridView.CellEndEdit

Dim colorX As Integer = DataGridView.CurrentCellAddress.X
Dim colorY As Integer = DataGridView.CurrentCellAddress.Y

DataGridView(colorX, colorY).Style.BackColor = (元のBackColor )
DataGridView(colorX, colorY).Style.ForeColor = (元のForeColor )

End Sub



上記のコードを記述したところ解決しました。
二つのメソッド内に個別のセルスタイルを記述すればよかったのですね。
ありがとうございました。

[ メッセージ編集済み 編集者: chelsea 編集日時 2008-06-09 23:45 ]
1

スキルアップ/キャリアアップ(JOB@IT)