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

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

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

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

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

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

1 ответ

Решение

У меня есть точная реализация прямо здесь: http://nbug.codeplex.com/SourceControl/changeset/view/6081 которая реализует интерфейс 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;
    }
}

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

Раскрывающийся список для загрузки панелей

Панель электронной почты загружена

Изменить: Исходный код из проекта NBug.

Другие вопросы по тегам