-1

私はこのコードを使用しています..現在、デフォルトで私のアプリは topMost = true です

しかし、ボタンにこの機能を実行させようとすると、問題が発生し、一度無効になります。次に、2回目のクリックではありません。

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 に割り当てられている場合、2 番目のif条件が満たされます。それが問題の原因です。

コードの実行が false で始まり、最初に条件が満たされた場合は true に変更され、2 番目の if 条件がチェックされ、それも満たされ、再び false に変更されたとします。

于 2012-04-12T23:30:44.657 に答える
0

あなたはあなたの2番目の例であなたを 見せていません:Form

private void button1_Click(object sender, EventArgs e)
{
    pwn4g3 mainForm = new pwn4g3();
    mainForm.Show();
    mainForm.TopMost = true;
    mainForm.Update();
}

またmainForm.Show(this);、2 番目のフォームを使用すると、自分が所有し、Parent Form自動的に一番上になります。

private void button1_Click(object sender, EventArgs e)
{
    pwn4g3 mainForm = new pwn4g3();
    mainForm.Show(this);
}

しかし、個人的に Topmost プロパティを切り替えたい場合は、フォーム変数をクラス レベル変数として使用し、次のようにします。

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 に答える