-1

我正在使用此代码.. 现在默认情况下我的应用程序是 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();
}
4

2 回答 2

1
public void setTop()
{
    if (this.TopMost == false)
    {
        this.TopMost = true;
    }
    else // change this to else. 
    {
        this.TopMost = false;
    }
}

在您的版本中,当 true 分配给 this.topmost 时,第二个if条件满足。这就是问题的原因。

假设代码执行以 false 开始,然后第一个 if 条件满足,更改为 true,检查第二个 if 条件,它也满足,再次更改为 false。

于 2012-04-12T23:30:44.657 回答
0

您没有在第二个示例中显示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
    }
}
于 2012-04-13T00:58:57.147 回答