2017年04月 / 03月≪ 123456789101112131415161718192021222324252627282930≫05月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2010.08.14 (Sat)

DataGridViewでセルの値によってセルの色を変えたりする

セルに入ってる値から判断条件によってそのセルの文字色とか背景色を変えたい場合、
(Excelでいう条件付書式みたいな感じ)
CellFormattingイベントを使うのが一般的なんだろうか?
なんかよく使いそうな処理なんだが、これだって言うプロパティが見つからないし。

品名列と値段列があって、
・品名の先頭に「*」が付いてたら赤文字にする
・値段 > 500だったら背景をピンクにする
という処理を入れてみた。
こんな感じ。
uw000016_20100813075605.jpg

動作はなかなかよさげ。
バインド元を変えても、手動で入れた値に対してもちゃんと表示してくれる。
nullとかDBNullとかに気をつければ特に問題ない。と思う。
ソースは↓

【More・・・】


using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private DataTable dt;
public Form1()
{
InitializeComponent();

// 手動で追加削除可能
dataGridView1.AllowUserToAddRows = true;
dataGridView1.AllowUserToDeleteRows = true;

// データテーブル
dt = new DataTable();
DataColumn col1 = new DataColumn("品名", typeof(string));
DataColumn col2 = new DataColumn("値段", typeof(int));
// 値段はデフォルト0
col2.DefaultValue = 0;

dt.Columns.Add(col1);
dt.Columns.Add(col2);

// データ入れてみる
dt.Rows.Add("品名1", 800);
dt.Rows.Add("*品名2", 300);

dataGridView1.DataSource = dt;
}

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
// 値段列で、valueがnullでなくて、500以上
if (e.ColumnIndex == 1 && e.Value != null && (int)e.Value > 500)
{
// 背景をピンクに
e.CellStyle.BackColor = Color.LightPink;
}
// 品名列
if (e.ColumnIndex == 0)
{
// DBNullでもnullでもない
if (e.Value != DBNull.Value && e.Value != null)
{
// 品名の頭に*が付いてる
if (((string)e.Value).StartsWith("*"))
{
// 文字色を赤に
e.CellStyle.ForeColor = Color.Red;
}
}
}
}
}
}


 |  07:56  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑

Comment

コメントを投稿する

URL
コメント
パス  編集・削除するのに必要
非公開  管理者だけにコメントを表示
 

Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。