使用字符串名称访问按钮并更改其背景颜色
本文关键字:背景 颜色 按钮 字符串 访问 | 更新日期: 2023-09-27 18:07:06
我需要使用它们的字符串名称访问按钮并更改它们的BackColor
属性。
我尝试使用this.control[string key]
和this.controls.Find(string, bool)
,但没有这些工作。
oleDbConnection.Open();
OleDbCommand command = new OleDbCommand("SELECT * FROM CUSTOMER WHERE FLIGHTNO = '" + variables.depFlightNo + "'", oleDbConnection);
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string seat = reader[3].ToString();
this.Controls[seat].BackColor = Color.Red;
}
reader.Close();
oleDbConnection.Open();
OleDbCommand command = new OleDbCommand("SELECT * FROM CUSTOMER WHERE FLIGHTNO = '" + variables.depFlightNo + "'", oleDbConnection);
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string seat = reader[3].ToString();
foreach (Button s in this.Controls)
//if the controls are in different place
//like panel or groupbox change "this.Controls" to "groupBox.Controls"
{
if (s.Name == seat)
{
s.BackColor = Color.Yellow;
}
}
}
reader.Close();
如果按钮控件包含在不同的容器中而不是表单中,则代码无法找到它们。
您需要使用按钮控制容器而不是this
。(分组箱?一个面板?)
所以,例如,如果你的按钮在名为panel1
的Panel中你的循环应该更改为
while (reader.Read())
{
string seat = reader[3].ToString();
Controls[] found = this.panel1.Controls.Find(seat, false);
if(found != null && found.Length > 0)
found[0].BackColor = Color.Red;
}
(增加了对控件名称的检查,以避免在未找到控件时出现异常)