我想制作一个动态的GUI,这意味着GUI会根据用户在组合框上做出的选择而改变。
例如,如果组合框由{英语,西班牙语,法语}组成,则组合框底部的面板将根据选择更改其描述语言。
要做到这一点,我相信我必须做一些像清晰的面板然后重绘面板,但我不知道如何。
有人可以告诉我如何在Visual Studio 2005 C#中详细说明这一点吗?
提前谢谢。
答案 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;
}
}
当然,此代码应以另一种形式运行,您希望将其他表单加载到其中。
编辑:源代码来自NBug项目。