【问题标题】:How can i change the buttons color in the data grid view?如何更改数据网格视图中的按钮颜色?
【发布时间】:2020-01-03 11:42:49
【问题描述】:

(对于英语错误,我很抱歉) 你好, 我正在尝试从 datagridview 中的按钮更改颜色。我已经为 dgv 提供了来自 sql Server 的数据,它工作得非常好。我得到了我需要的所有数据。然后我为网格中的每一行添加了索引 [0] 上的按钮,以打开第二个窗口进行编辑(也可以正常工作)。但我也希望按钮单独更改颜色。我有一个名为“状态”的列索引 [5]​​,可能有 3 种不同的类型:“活动”“过期”和“过期”。 “if cell = 'active'” 有效并发现它是否为真。但不能用的是变色码。

我已经尝试了一些安静的事情,并浪费了一整天的时间。 我试过“row.Cells[0].Style.BackColor = Color.Green;”和 ForeColor,将 Color.Green 更改为 System.Drawing.Color.Green。每次更改某些内容时都尝试刷新它,如果完成则只刷新一次。我将代码缩短为只有活动的,并尝试了只有活动的测试数据,这也不起作用。我尝试使用调试器,但以我的知之甚少找不到任何东西。我试过“dgvAlleAnträge.Rows[row.Index].Cells[5].Style.BackColor = Color.Green;”并将按钮更改为各种“平面”样式,因为有人说这会起作用。

    `private void AlleAntraege_Load(object sender, EventArgs e)
    {

        try
        {
            string con = "Data Source=" + Properties.Settings.Default.Server_Name + "; Initial Catalog=" + Properties.Settings.Default.Name_Of_DB + ";Integrated Security=" + Properties.Settings.Default.Integrated_Security;
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(con);
            SqlConnection sqlconn = new SqlConnection(builder.ToString());
            string sqlquery = Properties.Settings.Default.sqlquery;
            SqlCommand sqlcomm = new SqlCommand("SELECT TOP 50" + sqlquery, sqlconn);
            sqlconn.Open();
            SqlDataAdapter sdr = new SqlDataAdapter(sqlcomm);
            DataTable dt = new DataTable();
            sdr.Fill(dt);
            dgvAlleAnträge.DataSource = dt;
            sqlconn.Close();

            dgvAlleAnträge.Columns[2].HeaderCell.Value = "Antrags ID";
            dgvAlleAnträge.Columns[4].HeaderCell.Value = "In-Pro-Nr.";
            dgvAlleAnträge.Columns[6].HeaderCell.Value = "Erstellungsdatum";
            dgvAlleAnträge.Columns[7].HeaderCell.Value = "Antragsteller UserID";
            dgvAlleAnträge.Columns[9].HeaderCell.Value = "IOW";
            dgvAlleAnträge.Columns[10].HeaderCell.Value = "Datum Von";
            dgvAlleAnträge.Columns[11].HeaderCell.Value = "Datum Bis";
            dgvAlleAnträge.Columns[12].HeaderCell.Value = "Status Mail";
            dgvAlleAnträge.Columns[13].HeaderCell.Value = "Beschreibung";
            dgvAlleAnträge.Columns[14].HeaderCell.Value = "Stellvertreter UserID";
            dgvAlleAnträge.Columns[15].HeaderCell.Value = "Anwender UserID";
            dgvAlleAnträge.Columns[16].HeaderCell.Value = "Anwender Vorname";
            dgvAlleAnträge.Columns[17].HeaderCell.Value = "Anwender Nachname";
            dgvAlleAnträge.Columns[18].HeaderCell.Value = "Anwender Email";
            dgvAlleAnträge.Columns[19].HeaderCell.Value = "Anwender Firma";
            dgvAlleAnträge.Columns[22].HeaderCell.Value = "Von System Name";
            dgvAlleAnträge.Columns[23].HeaderCell.Value = "Von System IP";
            dgvAlleAnträge.Columns[25].HeaderCell.Value = "Nach System Name";
            dgvAlleAnträge.Columns[26].HeaderCell.Value = "Nach System IP";
            dgvAlleAnträge.Columns[5].Visible = true;
            (dgvAlleAnträge.Columns[0] as DataGridViewButtonColumn).FlatStyle = FlatStyle.Flat;

            foreach (DataGridViewRow row in dgvAlleAnträge.Rows)
            {
                if (row.Cells[5].Value.ToString().Contains("aktiv") || row.Cells[5].Value.ToString().Contains("Aktiv"))
                {
                    (dgvAlleAnträge.Columns[0] as DataGridViewButtonColumn).FlatStyle = FlatStyle.Flat;
                    row.Cells[0].Style.BackColor = Color.Green;
                }
            }
        }
        catch { }
    }

`

如果“状态”列中的单元格 =“活动”,我希望按钮将背景颜色更改为绿色

【问题讨论】:

  • @TaW 看起来他正在更改外部名为“button1”的某个按钮的颜色,而不是 dgv 内的任何按钮
  • 将按钮更改为各种“扁平”样式 确实可以;您使用的代码在哪里?示例:(dgvAlleAnträge.Columns[0] as DataGridViewButtonColumn).FlatStyle = FlatStyle.Flat;
  • 不,他不是,但我的链接确实如此......我的错......
  • @TaW 我试过了,它变成了平面(设计师曾经和现在使用这段代码),但它没有改变 dgv 内的颜色
  • 在这里和其他任何地方都可以。显示代码并确保不要留下旧代码。另外,请使用调试器确保您打对了行!还要正确拼写:在一个地方测试“aktiv”,并​​在帖子中写下“active..”。

标签: c# button datagridview colors


【解决方案1】:

row.Cell[0].Style.BackColor = Color.Green; 不起作用。你必须使用(DataGridView1.Columns[row.Index] as (DataGridViewButtonColumn).DefaultCellStyle.BackColor = Color.Green; 然后你的按钮会得到你想要的颜色。

【讨论】:

  • 这并不能完全涵盖这种情况。为了更好地讨论这个问题see here -
  • 但不知何故,它在我的程序中并没有这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多