VB.NET DataGridの任意の1レコードの背景色のみ変更することは可能ですか?


とも  2005-02-15 07:15:08  No: 119640

VB.NETでFormのDataGridにmdbファイルのテーブルデータを表示しています。
そのDataGridの、ある任意のレコードのみ背景色を変更させることは
可能でしょうか?  DataGridのプロパティー「SelectionBackColor」で
マウス操作で選択したレコードの背景色を変更することはできるのですが、
私はセルの数値がある数値を超えた場合に自動的に、そのレコードの
背景色を変更させたいと思っています。なにぶん初心者で、無知な
質問かも知れませんが、ご存知な方がおられましたらご教授頂きたく
よろしくお願いいたします。


無責任男  2005-02-16 02:10:41  No: 119641

こんなんダメかしら?

        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()


とも  2005-02-16 09:31:14  No: 119642

ご意見ありがとうございます。
早速やってみたのですが、
「DataGridView は宣言されていません」と言うメッセージが出て、
そのコードの下に波線が出ます。だめなんでしょうか?


無責任男  2005-02-16 18:04:48  No: 119643

サンプルソースの"DataGridView"のところは
ともさんがFormに貼り付けたDataGridの名前に置き換えてみて下さい。
どうでしょう?


とも  2005-02-16 19:29:33  No: 119644

無責任男さん 何度もありがとうございます。
書いてくださったサンプルコードの"DataGridView"のところを
私の現在のDataGrid名"DataGrid1"を入れてみたのですが、
そこに「'Rows'は'System.Windows.Forms.DataGrid'のメンバでは
ありません」とメッセージが出ます。


特攻隊長まるるう  2005-02-21 19:26:55  No: 119645

http://dobon.net/vb/dotnet/datagrid/coloredcell.html


VB.NET初心者  2005-02-22 08:37:42  No: 119646

特攻隊長まるるう さん 教えて頂けますか。

上記の投稿DataGrid のセル単位に入力制限をかけたいのですが、
上記のソースを見てもどのように記述して、どのようにCallして良いのか
さっぱり理解できません。申し訳ありませんが
是非教えてください。

(VB.NET WinForm環境)


。。。  2005-02-22 09:06:43  No: 119647

>上記の投稿DataGrid のセル単位に入力制限をかけたいのですが
>さっぱり理解できません。
それはそうでしょう。
なぜなら質問が
>VB.NET  DataGridの任意の1レコードの背景色のみ変更することは可能ですか?
なんですから。
この問題が解決したなら、解決済みとして別スレで再度質問するのが良いのでは?


かおかず  2005-07-25 08:23:38  No: 119648

ともさんの質問に対するものは作成できたのですが、
同じ行のあるセルの値をもとに、同じ行のセルの文字色を変更させたいのですが、
超初心者なものでできません。どなたか教えてください。
例:同じ行に、A、Bがあり、A=1ならBの色を青にする。


特攻隊長まるるう  2005-07-25 19:19:15  No: 119649

>ともさんの質問に対するものは作成できたのですが、
リンク先の DOBON.NET さんのコードを使ったという事?

[PAPA'n VB (ぱぱんぶぃびぃ) - VB.NET Tips データグリッドの行削除の直前に確認する]
http://www.sugi-family.net/papanvb/vbnet_tips.php?cate=20&tips=20002
Paint メソッド内でユーザ定義のイベント起こしてフォーム側でそのイベントを拾い、
A列の値を調べてフラグ変更すれば…出来るんじゃないかと。


かずかお  2005-07-25 21:16:08  No: 119650

特攻隊長まるるうさんご返事ありがとうございます。
すいません。超初心者なのでどのようにしたらいいか全然わかりません。(^^;
今下記のような状態です。

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前になんとかならないのかなと思ったのですが、
どうしてもわからなかったので...。

わかりずらい文面かも知れませんがよろしくお願い致します。


特攻隊長まるるう  2005-07-25 22:45:04  No: 119651

リンク先は DataGridColumnStyle を『継承』し、
Paint メソッドを『オーバーライド』する事により
実現しています。これはセルごとの描画処理と関係
があり、
>       For i = 0 To 10 Step 1
そのようなループでまわす処理ではありません。
…全く理解できてないようですね。

ボクは質問者が自分で勉強すべき部分まで肩代わりする気は
ありません。リンク先のサンプルコードを見てもそのレベル
なら、まずは『継承』について勉強してきて下さい。
残念ながら『継承』は、超初心者では説明しても理解できない
技術レベルだと思います。

それがイヤなら望み通りの動きをするコードを書いてくれる人を待つか…。

あと、ハンドル名が違っている場合、別の人物だと判断します。
お気をつけ下さい。


かずかお  2005-07-26 03:33:56  No: 119652

特攻隊長まるるうさんへご返事ありがとうございます。
やっぱ上記考えはナンセンスですよね。
ともさんの返事における無責任男さんの返事みてたら
こちらの方が簡単かなと...。
この件に関しては勉強してがんばってみます。
また別件で問い合わせさせて頂くかもしれませんがそのときはよろしくお願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加