Keanku Ответов: 1

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


У меня есть панель с тремя групповыми ящиками. Каждый groupbox имеет свой элемент управления(combobox, метки, текстовые поля и т.д.). Groupbox1 используется по умолчанию при загрузке панели. Combobox с двумя элементами определяет, когда groupbox2 становится видимым, а groupbox1 исчезает, чтобы пользователь мог ввести в него определенную информацию.

от свойства groupbox1: видимое = "истинный" groupbox2: видимое = "ложных" groupbox3: видимое = "ложных"

Мое намерение таково,

1) пункт один ничего не делает при выборе, так как по умолчанию groupbox1 и его элементы управления уже видны.

2) Пункт второй делает groupbox1 и его элементы управления скрытыми, а groupbox2 и его элементы управления видимыми. Combobox с аналогичной функцией находится в groupbox2 exist, чтобы включить переключатель обратно в groupbox1, если выбран пункт два.

Предполагается, что все это происходит во время выполнения.

Существует третий groupbox3, который запускается кнопкой на панели. Я намерен сделать groupbox3 видимым, в то время как все на панели будет выглядеть тусклым, пока не будет нажата кнопка закрытия groupbox3. я хочу иметь возможность вносить изменения в метки в groupbox1 и groupbox2, используя элемент управления combobox в groupbox3.

Моя проблема в том, что

1)Как сделать так, чтобы groupbox1 или groupbox2 на панели казались блеклыми и не полностью скрытыми,в то время как groupbox3 всплывает как messagebox, а также когда я нажимаю кнопку закрытия на groupbox3, groupbox3 закрывается, а groupbox1 или groupbox2 снова становятся видимыми

Что я уже пробовал:

 private void panel1_Paint(object sender, PaintEventArgs e)
{

}

private void cb1_SelectedIndexChanged(object sender, EventArgs e)
{
    gb1.Visible = cb1.SelectedIndex == 0;

    switch (cb1.SelectedIndex)
    {
        case 0:
            gb1.Visible = true;
            gb2.Visible = false;
            break;
        case 1:
            gb2.Visible = true;
            gb1.Visible = false;
            break;
    }
}

private void cb2_SelectedIndexChanged(object sender, EventArgs e)
{
    gb2.Visible = cb2.SelectedIndex == 0;

    switch (cb1.SelectedIndex)
    {
        case 0:
            gb2.Visible = true;
            gb1.Visible = false;
            break;
        case 1:
            gb1.Visible = true;
            gb2.Visible = false;
            break;
    }
}

private void bt1_Click(object sender, EventArgs e)
{
    gb3.Show();
    gb1.Hide();
    gb2.Hide();
}

private void bt2_on_gb3_Click(object sender, EventArgs e)
{
    gb3.Hide();
    gb1.Show();
    gb2.Show();
}

1 Ответов

Рейтинг:
0

OriginalGriff

Я бы сделал это так: создал каждый GroupBox и связанные с ним элементы управления как отдельный UserControl и использовал события, чтобы сигнализировать родительской панели или форме, что требуется изменение. Тогда все просто: установите Visible собственность все элементы управления UserControl, чтобы false а затем установите тот, который вы хотите видеть true

Это также означает, что групповые блоки становятся независимыми и могут быть изменены / добавлены безнаказанно, потому что "внешнему миру" не нужно знать, какие элементы управления они содержат.