繁体   English   中英

如何防止控件绑定到面板

[英]How prevent Controls binding to Panel

我的表单顶部有一行按钮,底部有一行按钮。 为了改善外观,我在每两行的后面放置了一个面板。 这给我带来的问题是我不再拥有可以引用任何按钮的例程。 这是因为我现在需要在参考中包括面板的名称。

例如,我有一个例程,当该按钮获得焦点时,该按钮会使前景色变为红色。

Internal void ButtonGotFocus()
{
    CurrentFieldName = this.ActiveControl.Name;
    this.Controls[CurrentFieldName].ForeColor = Color.FromArgb(192, 0, 0);
}

现在,此例程为面板内的按钮生成空引用错误。 我只希望这些面板使我的表单看起来更像样。 我不想将它们用作容器。 我可以禁用此功能吗?

如果是两个面板,则必须检查每个面板:

if (Panel1.Controls.ContainsKey(CurrentFieldName)) {
  Panel1.Controls[CurrentFieldName].ForeColor = Color.FromArgb(192, 0, 0);
} else if (Panel2.Controls.ContainsKey(CurrentFieldName)) {
  Panel2.Controls[CurrentFieldName].ForeColor = Color.FromArgb(192, 0, 0);
}

或者,您可以创建一个Dictionary并以这种方式引用控件:

Dictionary<string, RadioButton> rboxes = new Dictionary<string, RadioButton>();
rboxes.Add(radioButton1.Name, radioButton1);
rboxes.Add(radioButton2.Name, radioButton2);
rboxes.Add(radioButton3.Name, radioButton3);
rboxes.Add(radioButton4.Name, radioButton4);

if (rboxes.ContainsKey(CurrentFieldName)) {
  rboxes[CurrentFieldName].ForeColor = Color.FromArgb(192, 0, 0);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM