VB.NETでFormのDataGridにmdbファイルのテーブルデータを表示しています。
そのDataGridの、ある任意のレコードのみ背景色を変更させることは
可能でしょうか? DataGridのプロパティー「SelectionBackColor」で
マウス操作で選択したレコードの背景色を変更することはできるのですが、
私はセルの数値がある数値を超えた場合に自動的に、そのレコードの
背景色を変更させたいと思っています。なにぶん初心者で、無知な
質問かも知れませんが、ご存知な方がおられましたらご教授頂きたく
よろしくお願いいたします。
こんなんダメかしら?
Dim i, j As Integer
For i = 0 To DataGridView.RowCount - 1
'下のIfに条件を入れてね♪
If (i = 1) Then
'条件に合ったのでセルの色を変える
For j = 0 To DataGridView.Rows(i).Cells.Count - 1
DataGridView.Rows(i).Cells(j).Style.BackColor = Color.Blue
Next
End If
Next
'念のため
DataGridView.Refresh()
ご意見ありがとうございます。
早速やってみたのですが、
「DataGridView は宣言されていません」と言うメッセージが出て、
そのコードの下に波線が出ます。だめなんでしょうか?
サンプルソースの"DataGridView"のところは
ともさんがFormに貼り付けたDataGridの名前に置き換えてみて下さい。
どうでしょう?
無責任男さん 何度もありがとうございます。
書いてくださったサンプルコードの"DataGridView"のところを
私の現在のDataGrid名"DataGrid1"を入れてみたのですが、
そこに「'Rows'は'System.Windows.Forms.DataGrid'のメンバでは
ありません」とメッセージが出ます。
http://dobon.net/vb/dotnet/datagrid/coloredcell.html
特攻隊長まるるう さん 教えて頂けますか。
上記の投稿DataGrid のセル単位に入力制限をかけたいのですが、
上記のソースを見てもどのように記述して、どのようにCallして良いのか
さっぱり理解できません。申し訳ありませんが
是非教えてください。
(VB.NET WinForm環境)
>上記の投稿DataGrid のセル単位に入力制限をかけたいのですが
>さっぱり理解できません。
それはそうでしょう。
なぜなら質問が
>VB.NET DataGridの任意の1レコードの背景色のみ変更することは可能ですか?
なんですから。
この問題が解決したなら、解決済みとして別スレで再度質問するのが良いのでは?
ともさんの質問に対するものは作成できたのですが、
同じ行のあるセルの値をもとに、同じ行のセルの文字色を変更させたいのですが、
超初心者なものでできません。どなたか教えてください。
例:同じ行に、A、Bがあり、A=1ならBの色を青にする。
>ともさんの質問に対するものは作成できたのですが、
リンク先の DOBON.NET さんのコードを使ったという事?
[PAPA'n VB (ぱぱんぶぃびぃ) - VB.NET Tips データグリッドの行削除の直前に確認する]
http://www.sugi-family.net/papanvb/vbnet_tips.php?cate=20&tips=20002
Paint メソッド内でユーザ定義のイベント起こしてフォーム側でそのイベントを拾い、
A列の値を調べてフラグ変更すれば…出来るんじゃないかと。
特攻隊長まるるうさんご返事ありがとうございます。
すいません。超初心者なのでどのようにしたらいいか全然わかりません。(^^;
今下記のような状態です。
DataGrid.SetDataBindingする前に、
http://dobon.net/vb/dotnet/datagrid/coloredcell.htmlを参考に試みたのですがダメで、
今度は、DataGrid.SetDataBindingした後に表示されたものに対して処理かけようとしています。
で、次はUserDataGrid(i, 4)の値が参照して該当する値ならUserDataGrid(i, 2)の文字色を変更させ
ようとしています。
For i = 0 To 10 Step 1
IF UserDataGrid(i, 4) ="1" THEN
'ここでUserDataGrid(i, 2)の文字色を変更
End IF
Next
タイミングとしては、DataGrid.SetDataBinding前になんとかならないのかなと思ったのですが、
どうしてもわからなかったので...。
わかりずらい文面かも知れませんがよろしくお願い致します。
リンク先は DataGridColumnStyle を『継承』し、
Paint メソッドを『オーバーライド』する事により
実現しています。これはセルごとの描画処理と関係
があり、
> For i = 0 To 10 Step 1
そのようなループでまわす処理ではありません。
…全く理解できてないようですね。
ボクは質問者が自分で勉強すべき部分まで肩代わりする気は
ありません。リンク先のサンプルコードを見てもそのレベル
なら、まずは『継承』について勉強してきて下さい。
残念ながら『継承』は、超初心者では説明しても理解できない
技術レベルだと思います。
それがイヤなら望み通りの動きをするコードを書いてくれる人を待つか…。
あと、ハンドル名が違っている場合、別の人物だと判断します。
お気をつけ下さい。
特攻隊長まるるうさんへご返事ありがとうございます。
やっぱ上記考えはナンセンスですよね。
ともさんの返事における無責任男さんの返事みてたら
こちらの方が簡単かなと...。
この件に関しては勉強してがんばってみます。
また別件で問い合わせさせて頂くかもしれませんがそのときはよろしくお願い致します。
ツイート | ![]() |