列表框作为表单选择器
本文关键字:表单 选择器 列表 | 更新日期: 2023-09-27 18:26:34
如何有效地检测Listbox的哪个元素被选中并切换到相应的表单?目前,我是这样做的:
public static Form GetForm(string name)
{
switch (name) //name - Selected item in listbox as string
{
case "Преломление Света":
return new Light();
case "Закон Ома":
return new OHMsLaw();
default:
return null;
}
}
它运行良好,但我怀疑我的解决方案是否正常。
我会将表单存储在字典中,例如:
ConcurrentDictionary<string, Form> _forms;
void InitDictionaries(){
_forms = new ConcurrentDictionary<string, Form>();
_forms.TryAdd("Преломление Света", new Light()>;
_forms.TryAdd("Закон Ома", new OHMsLaw()>;
//...
}
所以,当涉及到选择时,我可以使用:
public Form GetForm(string name)
{
Form toShow;
_forms.TryGetValue(name, out toShow);
return show;
}
此字典存储表单实例。
另一种方法是存储派生窗体的类型,但如果您想存储现有窗体,这不是一个好的解决方案,因为它会创建新实例。
ConcurrentDictionary<string, Type> _forms;
你可以这样添加类型:
_forms.TryAdd("Закон Ома", typeof(OHMsLaw));
你可以这样使用:
public Form GetForm(string name)
{
Type type;
_forms.TryGetValue(name, out type);
if (type != null)
return Activator.CreateInstance(type) as Form;
return null;
}