C# 动态更改按钮背面颜色c
我想用计时器更改flowLayoutPanel1中包含的按钮的颜色。 使用我的查询代码,颜色会正确更改,但当查询条件变为false时,我的按钮在创建时不会更改颜色,而是将颜色设置为绿色 这是我的代码:C# 动态更改按钮背面颜色c,c#,sqldatareader,C#,Sqldatareader,我想用计时器更改flowLayoutPanel1中包含的按钮的颜色。 使用我的查询代码,颜色会正确更改,但当查询条件变为false时,我的按钮在创建时不会更改颜色,而是将颜色设置为绿色 这是我的代码: private void timer1_Tick(object sender, EventArgs e) { int t = 0; int st = 0; try { using (SqlConnection cn =new SqlConnectio
private void timer1_Tick(object sender, EventArgs e)
{
int t = 0;
int st = 0;
try
{
using (SqlConnection cn =new SqlConnection(VisualizzaOrdini.Form1.cnstr))
{
string strSql = "SELECT tavolo,stampa FROM Ordini";
SqlCommand cmd = new SqlCommand(strSql, cn);
cn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
t = (int)dr["tavolo"];
st = (int)dr["stampa"];
foreach (Control c in flowLayoutPanel1.Controls)
{
if (st == 0)
{
if (c.Name == Convert.ToString(t))
{
c.BackColor = Color.Red;
}
}
else if (c.Name == Convert.ToString(t))
{
c.BackColor = Color.Green;
}
}
}
}
cn.Close();
}
}
}
catch (Exception)
{
}
我需要在一个餐厅项目中实现这一点。如果桌子忙的话,我想把它涂成红色,如果桌子空闲的话,我想把它涂成绿色
这是一幅图像:
此外,如果flowLayoutPanel1代码中的按钮不起作用,则更改foreach循环以查找特定的按钮控件或您可能正在使用的任何自定义控件,因为它当前将查看所有控件,无论它们是否为按钮
foreach (Control c in flowLayoutPanel1.Controls)
{
if (c is Panel)
{
//iterate through panel
}
}
问题是什么?我有多个背景颜色为绿色的按钮,查询时我想把它们变成红色,这很有效!,但是我的查询不能很好地工作,因为如果表的数量从忙变为空闲,按钮的颜色不会从红色变为绿色!您知道表状态何时更改,因为您必须自己更新数据库。因此,当您进行更新时,您会更新显示的颜色。所以我看不出有什么问题。数据库状态是如何更新的?在什么情况下背景颜色变为黄色?我认为foreach中有一个问题…不,我也有同样的问题!如果您不在其他地方更新数据库(我假设您是st),则它将始终返回为0。因此,当您觉得数据库中的stampa列再次可用时,必须对其进行更新。
foreach (Control c in flowLayoutPanel1.Controls)
{
if (c is Panel)
{
//iterate through panel
}
}