質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

9133閲覧

C# DataGridViewクリック時にセルの色を変更しない方法について

Taffy

総合スコア33

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/02/20 04:41

Visual Studio Express 2017 for Windows Desktopを使用しています。
ataGridViewクリック時にセルの色を変更しない方法について、良い方法はないでしょうか?

セルの色はプログラム側で決定・着色するため
ユーザがセルクリックした時にセルの色が変わってしまうのを防ぎたいです。

以下のテストコードを書きましたが、セルの色がAquaのとき、クリックすると一瞬セルの色が白くなってしまいます。
これを防ぐ方法を教えていただけないでしょうか?
フォームにはDataGridViewと、タイマーを配置しています。

C#

1 public partial class Form1 : Form 2 { 3 List<Class1> cls = new List<Class1>(); 4 int nNo = 0; 5 Random r = new Random(100); 6 7 /// <summary> 8 /// コンストラクタ 9 /// </summary> 10 public Form1() 11 { 12 InitializeComponent(); 13 14 // Visualスタイルを使用しない 15 dgv.EnableHeadersVisualStyles = false; 16 // 行見出しは出さない 17 dgv.RowHeadersVisible = false; 18 19 // 列ヘッダの背景色の変更 20 dgv.ColumnHeadersDefaultCellStyle.ForeColor = SystemColors.ControlText; 21 dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.LightSkyBlue; 22 dgv.DefaultCellStyle.SelectionForeColor = SystemColors.ControlText; 23 dgv.DefaultCellStyle.SelectionBackColor = Color.White; 24 25 // セルを選択すると行全体が選択されるようにする 26 dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 27 // 一行しか選択できなくする 28 dgv.MultiSelect = false; 29 } 30 31 /// <summary> 32 /// タイマーイベント 33 /// </summary> 34 /// <param name="sender"></param> 35 /// <param name="e"></param> 36 private void timer1_Tick(object sender, EventArgs e) 37 { 38 Class1 item = new Class1(); 39 nNo++; 40 item.strNo = nNo.ToString(); 41 item.strName = DateTime.Now.ToString(); 42 item.strMode = r.Next(1,100).ToString(); 43 cls.Add(item); 44 45 this.SuspendLayout(); 46 bindingSource1.ResetBindings(false); 47 bindingSource1.DataSource = cls; 48 dgv.DataSource = bindingSource1; 49 this.ResumeLayout(); 50 51 for (int i = 0; i < dgv.ColumnCount; i++) 52 { 53 dgv.Rows[dgv.Rows.Count - 1].Cells[i].Style.BackColor = Color.Aqua; 54 } 55 } 56 }

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

これでどうでしょうか.

dgv.Rows[dgv.Rows.Count - 1].Cells[i].Style.BackColor = Color.Aqua; dgv.Rows[dgv.Rows.Count - 1].Cells[i].Style.SelectionBackColor = Color.Aqua; //←これを追加

投稿2020/02/20 04:50

fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2020/02/20 04:50

かぶった…
Taffy

2020/02/20 05:08

ありがとうございます! クリック時にもAquaの色を保つことができるようになりました。
fana

2020/02/20 06:09

全く同じ内容がかぶってしまった回答なので, こちらをBAとして選ぶ理由が特別無いようであれば,早かった側をBAにされると良いのではないかと思います.
YAmaGNZ

2020/02/20 06:25

ソース付きということでBAなのではないですかね? それでかまわないと思いますよ。
guest

0

色を変えたところのSelectionBackColorも変更してはどうですか?

投稿2020/02/20 04:47

YAmaGNZ

総合スコア10489

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Taffy

2020/02/20 05:09

ありがとうございます! BackColorだけでなくSelectionBackColorも設定する必要があったとわかり、 希望の動作ができるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問