我正在使用此代码..现在默认情况下我的应用是topMost = true
但是当我尝试按下按钮执行此功能时,我遇到了问题,它会禁用一次。然后再次点击第二次。
public void setTop()
{
if (this.TopMost == false)
{
this.TopMost = true;
}
if (this.TopMost == true)
{
this.TopMost = false;
}
任何想法为什么?这也发生在过去,从菜单中设置热键,我能够做到一次,之后就没用了:(
编辑:我发现了如何做到这一点,但无法用其他形式做到这一点。
private void button1_Click(object sender, EventArgs e)
{
pwn4g3 mainForm = new pwn4g3();
mainForm.TopMost = true();
mainForm.Update();
}
答案 0 :(得分:1)
public void setTop()
{
if (this.TopMost == false)
{
this.TopMost = true;
}
else // change this to else.
{
this.TopMost = false;
}
}
在您的版本中,当true为this.topmost分配时,第二个if
条件满足。这就是问题的原因。
让我们说代码执行以false开头,然后首先如果条件满足,则更改为true,检查第二个if条件,它也满足,再次更改为false。
答案 1 :(得分:0)
在第二个示例中,您不是Showing Form
尝试:
private void button1_Click(object sender, EventArgs e)
{
pwn4g3 mainForm = new pwn4g3();
mainForm.Show();
mainForm.TopMost = true;
mainForm.Update();
}
此外,如果您使用mainForm.Show(this);
,则第二个表单将由您的Parent Form
拥有并自动显示在其中。
private void button1_Click(object sender, EventArgs e)
{
pwn4g3 mainForm = new pwn4g3();
mainForm.Show(this);
}
但就个人而言,如果我想切换Topmost属性,我会将Form变量作为Class级变量,并执行类似的操作。
public partial class Form1 : Form
{
pwn4g3 mainForm = new pwn4g3();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if(mainForm.IsDisposed ) //Check that Form hasn't been destroyed
mainForm = new pwn4g3();
if(!mainForm.Visible) //Make sure it is visible
mainForm.Show();
mainForm.TopMost = !mainForm.TopMost;
this.BringToFront(); //To verify zorder of created form
}
}