- PR -

'datagridviewのマイナス値の書式設定

投稿者投稿内容
だんく
常連さん
会議室デビュー日: 2006/02/06
投稿数: 47
投稿日時: 2006-02-09 11:42
Hongliang様

>ん〜……。
>前提が把握しきれない。
>結局のところ、以下の表があったとして、どのセルの色を変えたいのでしょうか?
>コード:
>------------------------------------------------------------------------------>--
>
>dataGridView1
> columnA columnB
>rowA -3 100
>rowB 3 -100
>
>dataGridView2
> columnA' columnB'
>rowA' 3 -100
>rowB' -3 100

変えたい所は
dataGridView1
columnA columnB
rowA -3 100
rowB 3 -100

dataGridView2
columnA' columnB'
rowA' 3 -100
rowB' -3 100

dataGridView1のー3、-100 dataGridView2のー3、-100です。
よろしくお願い致します。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-02-09 12:09
引用:

dataGridView1のー3、-100 dataGridView2のー3、-100です。


つまり、特定の列のなかで、マイナスの値を含むセルに対して前景色を変更したいと。
で、それぞれのDataGridView同士の連結とかはないんですよね?(dataGridView1(0, 0)がマイナスの場合はdataGridView2(0, 0)は必ず赤、とか)

CellFormattingイベントは全てのセルに対してそれぞれ発生しますから、わざわざ行をなめたりしなくてもいずれ回ってきます。
ですので、
コード:
Private Sub datagridview1_CellFormatting( _
      ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) _
      Handles datagridview1.CellFormatting
  If (e.ColumnIndex = [特定の列番号1] OrElse e.ColumnIndex = [特定の列番号2]) Then
    If (Not(e.Value Is Nothing) AndAlso (e.Value < 0)) Then
      e.CellStyle.ForeColor = Color.Red
    End If
  End If
End Sub


で済む話ですよね。
//VBはあんまり使わないのでC#で言う (hoge != null) の正しい書き方知りません。
もちろんそれぞれのDataGridViewに対してCellFormattingイベントを書く必要はありますが、コピペレベルですし。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-09 12:22
引用:

Hongliangさんの書き込み (2006-02-09 12:09) より:

CellFormattingイベントは全てのセルに対してそれぞれ発生しますから、わざわざ行をなめたりしなくてもいずれ回ってきます。


でしたっけ?

ひとつの Cell の背景色が赤にするのと同じタイミングで、
別の関係のない Cell の背景色も同期して赤くしたいのだと思っていました。> 質問の意味

引用:

//VBはあんまり使わないのでC#で言う (hoge != null) の正しい書き方知りません。


正しいと思いますよ。

コード:

    If Not obj Is Nothing Then



2005 ならば、IsNot 演算子がサポートされますので、

コード:

    If obj IsNot Nothing Then


のいずれかになります。(私も VB は詳しくないw)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
だんく
常連さん
会議室デビュー日: 2006/02/06
投稿数: 47
投稿日時: 2006-02-10 16:30
Hongliang様、じゃんぬねっと様、質問の意図が伝わりづらく申し訳ありませんでした。
Hongliang様が教えて下さいました方法で無事できました。ありがとうございます。

集計用のデータグリッドビューだけは、
日付等のフィルタで絞込みをしてからの計算になりますので、(始めは何も表示してなく、空の行だけです。)
If (Not (e.Value Is DBNull.Value) AndAlso (e.Value < 0)) Then
に少し変えさせていただきました。
AndAlsoという便利な言葉を始めてしり大変勉強になりました。

ありがとうございました。

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