C#关于点击事件的有关问题

C#关于点击事件的问题
新手就要勇于提问···
做的一个订票功能,用30个按钮(1个按钮组)代表座位,每个座位数据库里对应1-30数字且每个数字对应一个state表示状态。(1为售出,0为空)
当时做的时候未考虑到设置state为1时不能订票的条件。
现在想法是 点击任意一个按钮,抛出一个事件,通过相应函数注册获得state的值,然后判断”是否满足购票条件“
我给按钮也添加了颜色来分类,红表示售出,黄表示未售出。相应的也设置了代码来对售出的票的座位号的state值进行改变。
string sql_1 = "select * from seats where filmid='" + UserHelper.Id+ "'";
                dataAdapter = new SqlDataAdapter(sql_1, DBHelper.conn);
                DataSet dataset_1 = new DataSet();
                dataAdapter.Fill(dataset_1, "seats");
                DataTable dt = dataset_1.Tables["seats"];
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (dr["state"].ToString() == "1")
                        {
                            foreach (Button b1 in groupBox1.Controls)
                            {
                                if (b1.Text == dr["num"].ToString())
                                {
                                    b1.BackColor = Color.Red;
                                }
                            }
                        }
                    }
                }

能不能通过判定颜色来判断是否可以进行购票操作。因为基础很差,希望能给点有用的建议。
------解决思路----------------------
数据库里对应state多加个值代表锁定状态不就好了吗?
------解决思路----------------------
將你的 state 标记, 写到 Button  的 Tag里面去.  

当然你用颜色来做判断, 也可以的.

还可以將已经订票的 Button 的 enabled 设置为 false.
------解决思路----------------------
最起码搭建个三层啊,数据操作和视图操作都混一块了;

还有既然所有的button都是相同的操作你可以让它们使用同一个事件;

颜色是在视图上看是否为已售出,但是在逻辑上可以直接用state判断是否可以购票;