在运行时更改顶部最多
本文关键字:顶部 运行时 | 更新日期: 2023-09-27 18:30:52
我正在使用此代码..现在默认情况下我的应用程序是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();
}
public void setTop()
{
if (!this.TopMost)
{
this.TopMost = true;
}
else // change this to else.
{
this.TopMost = false;
}
}
在您的版本中,当 true 分配给 this.topmost时,第二个if
条件满足。这就是问题的根源。
假设代码执行以 false 开头,然后首先如果满足条件,则更改为 true,检查第二个 if 条件,它也满足,再次更改为 false。
您没有在第二个示例中显示您的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 变量作为类级变量并执行类似操作。
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
}
}