在 winforms 中使用控件(链接标签、树视图)
Posted
技术标签:
【中文标题】在 winforms 中使用控件(链接标签、树视图)【英文标题】:working with controls(linklabels, treeview) in winforms 【发布时间】:2011-03-22 09:07:18 【问题描述】:我在面板和树视图上添加了一个面板和两个 LinkLabel。
现在在 panel_Paint 事件中,我希望链接标签颜色变为白色,树视图的背景颜色变为黑色。 我该怎么做?
以下代码仅在面板中没有树视图时有效,但当我在面板中添加树视图时,它会显示:
无法将“System.Windows.Forms.TreeView”类型的对象转换为“System.Windows.Forms.LinkLabel”类型。
foreach (LinkLabel link in panel1.Controls)
link.LinkColor = Color.White;
【问题讨论】:
【参考方案1】:您的面板包含所有控件 - 其中一个是 TreeView
,它不能转换为 LinkLabel
。在您的循环中,您需要像这样检查控件的类型:
foreach (Control control in panel1.Controls)
if (control is LinkLabel)
... set link color
else if (control is TreeView)
... set background
或者,如果您只有一个 LinkLabel
和一个 TreeView
,则不需要循环 - 只需像使用 panel1
一样按名称访问它们
【讨论】:
【参考方案2】:试试这个:
foreach (Control ctrl in panel1.Controls)
LinkLabel link = ctrl as LinkLabel;
if(link != null)
link.LinkColor = Color.White;
【讨论】:
【参考方案3】:您收到错误是因为您尝试将 panel1 中的所有控件转换为 LinkLabel。你需要尝试这样的事情
foreach (Control control in panel1.Controls)
if (control.GetType() == typeof(LinkLabel))
LinkLabel link = (LinkLabel)control;
link.LinkColor = Color.White;
希望这会有所帮助。
编辑:我知道有一种方法,但不确定 100% 的名称或语法。请参阅下面的改进答案。
foreach (LinkLabel link in panel1.Controls.OfType<LinkLabel>())
link.LinkColor = Color.White;
希望这对你更好。
【讨论】:
以上是关于在 winforms 中使用控件(链接标签、树视图)的主要内容,如果未能解决你的问题,请参考以下文章