为什么在为dataGridView1中的第一列[0]单元着色时,它没有着色第一个单元格?

时间:2017-03-12 09:52:43

标签: c# .net winforms datagridview

for (int i = 0; i < countriesCodes.Length; i++)
            {
                dataGridView1.ColumnCount = 2;
                dataGridView1.Columns[0].Name = "Status";
                dataGridView1.Columns[1].Name = "Country";
                var countryName = codeToFullNameMap[countriesCodes[i]];
                string[] row = new string[] { "Ready", countryName };
                dataGridView1.Rows.Add(row);
                DataGridViewLinkColumn dgvLink = new DataGridViewLinkColumn();
                dgvLink.UseColumnTextForLinkValue = true;
                dgvLink.LinkBehavior = LinkBehavior.SystemDefault;
                dgvLink.HeaderText = "Link Data";
                dgvLink.Name = "SiteName";
                dgvLink.LinkColor = Color.Blue;
                dgvLink.TrackVisitedState = true;
                dgvLink.Text = lines[i];
                dgvLink.UseColumnTextForLinkValue = true;
                dataGridView1.Columns.Add(dgvLink);
            }
            this.dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridView1.EnableHeadersVisualStyles = false;
            dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor;
            dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor;

            dataGridView1.RowHeadersVisible = false;
            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control;


            dataGridView1.Columns[0].DefaultCellStyle.ForeColor = Color.Red;

最后一行应该为第一列下的单元格着色:

dataGridView1.Columns[0].DefaultCellStyle.ForeColor = Color.Red;

如果我将其更改为列1,它将为红色的所有单元格着色。但是当它是Columns [0]时,状态下的第一个单元格(在屏幕截图中)仍然是黑色。

Still black

单词Ready在状态下的第一个单词Ready是黑色的。无法弄清楚为什么它也没有着色。如果我为列1下的单元格着色,它将为所有单元格着色,但我想为列中的状态下的那些着色[0]

2 个答案:

答案 0 :(得分:2)

如果您将所选单元格移动到另一个cell,您会看到该项目也有红色forecolor。这两行会覆盖选择颜色。评论他们或给出符合逻辑的东西以避免混淆。

dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor;
dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor;

编辑1:

对于您评论过的问题,请将它们设置为透明。

dataGridView1.DefaultCellStyle.SelectionBackColor = System.Drawing.Color.Transparent;
dataGridView1.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.Transparent;

希望有所帮助,

答案 1 :(得分:-1)

我也有同样的问题。我通过在“ For”周期中添加一个条件来解决该问题。对于您的情况,您需要输入:

if(i == 0)
   {
    countriesCodes.Colums[0].Selected = false;
   }

我认为缺少颜色是由于单元格选择的颜色错误。让我知道问题是否已经解决。

Andrea Veglia