Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态更改按钮背面颜色c_C#_Sqldatareader - Fatal编程技术网

C# 动态更改按钮背面颜色c

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

我想用计时器更改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)
{
}
我需要在一个餐厅项目中实现这一点。如果桌子忙的话,我想把它涂成红色,如果桌子空闲的话,我想把它涂成绿色

这是一幅图像:


此外,如果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
                        }
                    }