Кнопка для отображения панели - PullRequest
0 голосов
/ 01 апреля 2011

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

        pnlSettings.Location = new Point(0, 0);
        pnlSettings.Size = this.ClientSize;
        pnlSettings.Visible = true;
        pnlSettings.BringToFront();

Этот код работает при первом его использовании.Но когда я пытаюсь использовать тот же код в программе, он не работает полностью.

        private void btnSettings_Click(object sender, EventArgs e)
    {
        int valueTemp;

        valueTemp = _game.Settings.GetValue("MusicVolume", 2);
        if (valueTemp < 0) valueTemp = 0;
        if (valueTemp > 3) valueTemp = 3;
        trackMusic.Value = valueTemp;
        valueTemp = _game.Settings.GetValue("SoundFxVolume", 3);
        if (valueTemp < 0) valueTemp = 0;
        if (valueTemp > 3) valueTemp = 3;
        trackSoundFx.Value = valueTemp;

        pnlSettings.Location = new Point(0, 0);
        pnlSettings.Size = this.ClientSize;
        pnlSettings.Visible = true;
        pnlSettings.BringToFront();

        this.Menu = mnuTitleSettings;
    }

Приведенный выше код работает так, как он должен.Однако следующий код просто останавливает игру и меняет меню.Панель настроек панели не отображается.

        private void mnuMain_Settings_Click(object sender, EventArgs e)
    {
        int valueTemp;

        Pause(true);

        valueTemp = _game.Settings.GetValue("MusicVolume", 2);
        if (valueTemp < 0) valueTemp = 0;
        if (valueTemp > 3) valueTemp = 3;
        trackMusic.Value = valueTemp;
        valueTemp = _game.Settings.GetValue("SoundFxVolume", 3);
        if (valueTemp < 0) valueTemp = 0;
        if (valueTemp > 3) valueTemp = 3;
        trackSoundFx.Value = valueTemp;

        pnlSettings.Location = new Point(0, 0);
        pnlSettings.Size = this.ClientSize;
        pnlSettings.Visible = true;
        pnlSettings.BringToFront();


        this.Menu = mnuSettings;
    }

Есть ли другой способ, которым я могу отобразить панель, и она все еще сохраняет и изменяет данные?Или я могу что-то добавить, чтобы оно отображалось?Я попытался добавить

        pnlSettings.Show();

Все еще не повезло.

Заранее благодарю за любую помощь.

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Элемент управления не становится видимым, пока вы не добавите его в коллекцию элемента управления родительского элемента.

    pnlSettings.Location = new Point(0, 0);
    pnlSettings.Size = this.ClientSize;
    this.Controls.Add(pnlSettings);

Не забудьте вызвать его метод Dispose () при повторном его удалении.

0 голосов
/ 01 апреля 2011

Есть ли у вас код в другом месте, который удаляет pnlSettings из коллекции Controls его родителя? Что-то вроде:

this.Controls.Remove(pnlSettings);
...