当我按下按钮时尝试调出面板时,它不显示。在属性中,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();
仍然没有运气。
提前感谢您的帮助。
答案 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);