我想用计时器更改有助于按钮的颜色包含在flowLayoutPanel1中。 使用我的查询代码,颜色更改正确,但当查询条件变为false时,我的按钮不会更改其颜色(当我创建它时,我将颜色设置为绿色)。
这是我的代码:
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)
{
}
我需要在餐厅计划中实现这一点。如果它是忙碌的话我想把桌子换成红色,如果它是免费的,我想把它换成绿色。
这是一张图片:
https://docs.google.com/file/d/0B-nMmszaCz8EVE9JdjlISHg1aDA/edit?usp=sharing
答案 0 :(得分:0)
foreach (Button button in flowLayoutPanel1.Controls)
{
if (button.Name == Convert.ToString(t))
{
if (st == 0)
{
button.BackColor = Color.Red;
}
else
{
button.BackColor = Color.Green;
}
}
}
此外,更改foreach循环以查找特定按钮控件(或您可能正在使用的任何自定义控件),因为它当前将通过所有控件查看控件,无论它们是否为按钮
答案 1 :(得分:0)
如果您的面板内的flowLayoutPanel1代码中的按钮不起作用
foreach (Control c in flowLayoutPanel1.Controls)
{
if (c is Panel)
{
//iterate through panel
}
}