我的表单上有一个列表框和一个按钮。列表框包含3个元素:House,People,Outdoor。 我还创建了3个表单来表示列表框中的值。
我想用户突出显示列表框中的项目,点击按钮后我想打开用户选择的表单。
我怎样才能做到这一点?我试过这个链接:Calling new Form by clicking an item on the ListBox但没有任何成功。
我试过了:
public Select()
{
InitializeComponent();
listBox1.Click += OnListBoxItemClick;
}
private void OnListBoxItemClick(object sender, EventArgs e)
{
var form2 = new House();
House.ShowDialog();
}
答案 0 :(得分:4)
您需要使用ListBox的SelectedItem属性:
private void button1_Click(object sender, EventArgs e)
{
switch (listBox1.SelectedItem.ToString())
{
case "House":
House h = new House();
h.ShowDialog();
break;
case "People":
People p = new People();
p.ShowDialog();
break;
case "Outdoor":
Outdoor o = new Outdoor();
o.ShowDialog();
break;
}
}
答案 1 :(得分:0)
您可以使用Dictionary
将所选项目中的值映射到表单,或者更好的是可以创建表单的函数(以确保延迟加载)。
private Dictionary<string, Func<Form>> formMapping
= new Dictionary<string, Func<Form>>()
{
{"House", ()=> new House()},
{"People", ()=> new People()},
{"Outdoor", ()=> new Outdoor()},
};
然后,您可以在click事件处理程序中使用该映射将所选值转换为表单:
private void button1_Click(object sender, EventArgs e)
{
Form newForm = formMapping[listBox1.SelectedValue]();
newForm.ShowDialog();
}