首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态添加的自定义用户控件不可见

动态添加的自定义用户控件不可见
EN

Stack Overflow用户
提问于 2012-08-08 02:39:17
回答 2查看 5.5K关注 0票数 2

我在C#中有一个带有下拉框的表单。当下拉框发生变化时,我希望它将一个自定义用户控件加载到面板中。我没有得到编译错误,没有运行时错误,但我也没有得到任何可见的用户控件。这里的想法是每个用户控件理解不同场景的配置。我想将每个场景封装在它自己的控件中,下拉框允许用户选择场景,这将加载控件以供用户执行配置。通过调整下拉菜单中的选项,我可以自定义给定客户的场景。正如我所说的,我的问题是我不能让任何控件变得可见。这是我用于down索引更改事件处理程序的代码:

代码语言:javascript
复制
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语句体)。任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-08 03:00:16

为了跟进my comment,我猜你的控件的位置和/或尺寸没有设置。

尝试如下所示:

代码语言:javascript
复制
...
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;
...

还可以使用控件的DockAnchor属性。

票数 1
EN

Stack Overflow用户

发布于 2012-08-08 02:51:04

1你可以用PlaceHolder替换你的菜单,他是添加控件的理想控件

下面是一个示例:http://www.developerfusion.com/code/3826/adding-controls-to-placeholders-dynamically/

2对于您的情况,您可以尝试将面板的visible属性调整为true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11852058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档