如何将字符串作为c#中的面板名称
本文关键字:字符串 | 更新日期: 2023-09-27 18:28:40
我的面板显示可见性为false。我想当点击树视图列表时,该列表将检索我存储在数据库中的面板名称。我知道如何在字符串中从数据库中检索那个面板名称。但是,如何将"字符串"更改为面板,使其能够这样写:
panelNamethatLoadFromDB.visible = true;
我的代码:
DataTable dtPanelToView = MyLibrary.getResults("SELECT LEVEL1_ID, LEVEL1_PATH FROM LEVEL1_TREEVIEW WHERE LEVEL1_DESC='" + clickLink + "'");
if (dtPanelToView.Rows.Count > 0)
{
string panelToDisplay = dtPanelToView.Rows[0]["LEVEL1_PATH"].ToString();
}
所以,目前这个"panelToDisplay"是包含面板名称的字符串。我想更改这个面板的可见性。示例:panelToDisplay.visible = true;
WinForms将在窗体上显示的控件存储在form.controls集合中
你可以循环浏览这个集合,找到你的面板
foreach(var pan in yourForm.Controls.OfType<Panel>())
{
if(pan.Name == panelToDisplay)
{
pan.Visible = true;
}
}
使用IEnumerable扩展,您还可以避免的显式循环
var pan = yourForm.Controls.OfType<Panel>().FirstOrDefault(x => x.Name == panelToDisplay);
if(pan != null)
pan.Visible = true;
请记住,表单的Controls集合仅存储第一级控件。如果包含在窗体的控件集合中的控件是控件容器,则它具有可以存储其他控件的控件集合。
编辑
从下面TaW的评论中,您也可以将Controls集合与字符串索引器一起使用
if(this.Controls.ContainsKey(panelToDisplay))
this.Controls[panelToDisplay].Visible = false;