在运行时更改顶部最多

本文关键字:顶部 运行时 | 更新日期: 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
    }
}