4

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

例如,如果组合框由 {English, Spanish, French} 组成,则组合框底部的面板将根据选择更改其描述语言。

要做到这一点,我相信我必须做一些事情,比如清除面板然后重绘面板,但我不知道怎么做。

有人可以告诉我如何在 Visual Studio 2005 C# 上详细实现这一点吗?

先感谢您。

4

1 回答 1

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;
    }
}

当然,这段代码应该以另一种形式运行,您希望将另一种形式加载到其中。

下拉加载面板

已加载电子邮件面板

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

于 2011-04-15T15:41:10.047 回答