Как создать динамическую панель для отображения и скрытия, используя различные варианты в поле со списком в C #? - PullRequest
4 голосов
/ 15 апреля 2011

Я хочу создать динамический графический интерфейс, означающий, что графический интерфейс будет меняться в зависимости от выбора, который пользователь делает в поле со списком.

Например, если поле со списком состоит из {английский, испанский, французский}, панель в нижней части окна со списком изменит язык описания в зависимости от выбора.

Для этого, я думаю, мне нужно сделать что-то вроде очистки панели, а затем перерисовать панель, но я понятия не имею, как.

Может кто-нибудь рассказать мне, как сделать это подробно в Visual Studio 2005 C #?

Заранее спасибо.

1 Ответ

4 голосов
/ 15 апреля 2011

У меня есть точная реализация прямо здесь: http://nbug.codeplex.com/SourceControl/changeset/view/6081#107027, которая реализует интерфейс IPanelLoader (ISubmitPanel для моего случая) и загружает любую панель с тем же именем, что и в поле со списком.В основном скачайте исходный код, скомпилируйте его и посмотрите на проект «Конфигуратор».Есть много вещей, которые потребовали бы от меня страниц, чтобы объяснить, но уже есть полный пример.

В моем случае, любая форма, реализующая интерфейс 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 проекта.

...