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 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/20 04:50
2020/02/20 05:08
2020/02/20 06:09
2020/02/20 06:25