表格如下:
我想使用组合框显示/隐藏面板。但不幸的是,它并没有像预期的那样发生。请检查代码。
namespace Physics
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//ComboBox Items are:
//Distance
//Time
//Velocity
void ControlCreate(object item)
{
switch (item.ToString())
{
case "Distance":
panel1.Visible = true;
break;
case "Time":
panel1.Visible = false;
break;
case "Velocity":
panel1.Visible = true;
break;
default:
MessageBox.Show("Default");
break;
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Form1 f = new Form1();
f.ControlCreate(comboBox1.SelectedItem);
}
}
}
我知道会有一个愚蠢的错误。
答案 0 :(得分:0)
当您ComboBox
更改其SelectedIndex
时,它将转到此事件处理程序:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Form1 f = new Form1();
f.ControlCreate(comboBox1.SelectedItem);
}
因此,你应该处理隐藏/显示你的面板。
不要创建新表单:
Form1 f = new Form1(); //unnecessary
但只需使用当前表单中的信息并相应更改其面板可见性:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e){
switch (comboBox1.SelectedItem.ToString())
{
case "Distance":
panel1.Visible = true;
break;
case "Time":
panel1.Visible = false;
break;
case "Velocity":
panel1.Visible = true;
break;
default:
MessageBox.Show("Default");
break;
}
}
您将完成这项工作,但您可能还想检查当comboBox的选定索引本身更改时显示/隐藏整个面板的逻辑是否正常。