如何使用C#中的组合框中的差异选项创建要显示和隐藏的动态面板?

时间:2011-04-15 15:34:14

标签: c# user-interface combobox panel nbug

我想制作一个动态的GUI,这意味着GUI会根据用户在组合框上做出的选择而改变。

例如,如果组合框由{英语,西班牙语,法语}组成,则组合框底部的面板将根据选择更改其描述语言。

要做到这一点,我相信我必须做一些像清晰的面板然后重绘面板,但我不知道如何。

有人可以告诉我如何在Visual Studio 2005 C#中详细说明这一点吗?

提前谢谢。

1 个答案:

答案 0 :(得分:4)

我在这里有这个确切的实现:http://nbug.codeplex.com/SourceControl/changeset/view/6081#107027实现了一个IPanelLoader(我的情况是ISubmitPanel)接口,并在组合框中加载任何具有相同名称的面板。基本上下载源代码并编译它,看看“Configurator”项目。有很多东西需要我解释,但已经有一个完整的例子。

在我的情况下,任何实现ISubmitPanel接口的表单(在我的情况下都是MailForm,FtpForm等)都可以像这样加载:

private void SubmitComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    switch (this.submitComboBox.SelectedItem.ToString())
    {
        case "E-Mail":
            this.Controls.Add(new MailForm());
            break;
        case "FTP":
            this.Controls.Add(new FtpForm());
            break;
        case "HTTP":
            this.Controls.Add(new HttpForm());
            break;
    }
}

当然,此代码应以另一种形式运行,您希望将其他表单加载到其中。

Dropdown to load panels

E-Mail panel loaded

编辑:源代码来自NBug项目。

相关问题