我在C#中有一个带有下拉框的表单。当下拉框发生变化时,我希望它将一个自定义用户控件加载到面板中。我没有得到编译错误,没有运行时错误,但我也没有得到任何可见的用户控件。这里的想法是每个用户控件理解不同场景的配置。我想将每个场景封装在它自己的控件中,下拉框允许用户选择场景,这将加载控件以供用户执行配置。通过调整下拉菜单中的选项,我可以自定义给定客户的场景。正如我所说的,我的问题是我不能让任何控件变得可见。这是我用于down索引更改事件处理程序的代码:
private void ddlCollectorType_SelectedIndexChanged (object sender, EventArgs e)
{
m_currentControl = null;
pnlDeviceConfig.Controls.Clear ();
switch ((string) ddlCollectorType.SelectedItem)
{
case "SEL-421":
SEL421ASCIIControl s421 = new SEL421ASCIIControl (this);
m_currentControl = s421;
pnlDeviceConfig.Controls.Add (s421);
break;
case "SEL-421 (FTP)":
break;
case "GE D60":
GED6061850Control geD60 = new GED6061850Control (this);
m_currentControl = geD60;
pnlDeviceConfig.Controls.Add (geD60);
break;
case "GE D60 (TFTP)":
break;
case "MiCOM P442":
break;
}
}到目前为止,我只创建了几个用户控件,因此出现了空的case语句。当我做出应该显示一些东西的选择时,我什么也得不到(在调试器中确认我正在命中case语句体)。任何帮助都将不胜感激!
发布于 2012-08-08 03:00:16
为了跟进my comment,我猜你的控件的位置和/或尺寸没有设置。
尝试如下所示:
...
SEL421ASCIIControl s421 = new SEL421ASCIIControl (this);
m_currentControl = s421;
pnlDeviceConfig.Controls.Add (s421);
// TODO: Set real size and position.
s421.Left = 0;
s421.Top = 0;
s421.Width = 100;
s421.Height = 50;
break;
...发布于 2012-08-08 02:51:04
1你可以用PlaceHolder替换你的菜单,他是添加控件的理想控件
下面是一个示例:http://www.developerfusion.com/code/3826/adding-controls-to-placeholders-dynamically/
2对于您的情况,您可以尝试将面板的visible属性调整为true
https://stackoverflow.com/questions/11852058
复制相似问题