【发布时间】:2018-03-16 23:28:43
【问题描述】:
我创建了一个如下所示的 Windows 窗体: My Windows Form
我想要做的是通过将其编号传递给 Form 构造函数来为这些编号按钮之一着色。这是我试图做的,但没有明显的变化。有什么建议吗?
public SeatSelection(string seatNumber)
{
InitializeComponent();
foreach(Control ctrl in this.tableLayoutPanel1.Controls)
{
if (ctrl.Text == seatNumber)
{
ctrl.BackColor = Color.Red;
}
}
}
if 语句确实找到了 true,BackColor 确实发生了变化,但表单不会更新: Watch
【问题讨论】:
-
有关该问题的更多信息会有所帮助。当您单步执行代码时,它是否找到 ctrl.Text == seatNumber 并执行 ctrl.BackColor 语句,或者 if 语句永远找不到真正的条件?换句话说,是 if 失败了,还是设置 BackColor 失败了?
-
发布的代码有效。使用调试器单步调试代码以查看发生了什么。
-
我认为此时(表单构造函数)表单中的控件尚未完全加载。您是否尝试在 Form.Load 事件中这样做?您可以将座位号存储在一个变量中,在构造函数中设置,然后在 Form.Load 事件中使用它。但是你也可以调试你的构造函数代码来检查按钮是否已经设置了它们的文本属性。
-
按钮的 FlatStyle 是否设置为 System?