按钮显示面板

时间:2011-03-31 20:25:43

标签: c# visual-studio-2008 windows-mobile panel

当我按下按钮时尝试调出面板时,它不显示。在属性中,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 个答案:

答案 0 :(得分:1)

在将控件添加到父级的Control集合之前,控件不会显示。

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

再次删除时,不要忘记调用它的Dispose()方法。

答案 1 :(得分:0)

您是否在其他地方有代码从父代pnlSettings集合中删除了Controls?类似的东西:

this.Controls.Remove(pnlSettings);