【发布时间】: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