簡體   English   中英

將窗戶形式,形式帶到前面,而不會最小化其他窗戶

[英]bringing a windows form, form to the front without minimising other windows

嗨,我對C#相對較新,對Windows窗體來說是全新的,基本上都是在嘗試創建一個潛意識的消息程序,在定時間隔內會快速顯示消息,然后再次隱藏。

我已經設法通過查看各種其他帖子創建了另一個表單,將彈出然后快速隱藏使用

msgObject.Activate();

這將形式帶到了前面。 然而,它阻止我在工作時打字,我基本上想知道是否有可能在我所有其他程序的前面出現某種消息或表單而不會中斷我當前的工作或打開如果有意義,關閉其他窗口和任務。 目前它將表格帶到了一切的前面,但也會阻止我輸入等等。

我不確定這是否可以使用我目前使用表單的方法,但如果有一種方法可以實現結果,我會非常感激找到

謝謝。

這里有更多我的代碼要澄清

 public partial class FormHomePage : Form
{
    private bool startSubliminal = false;
    msg msgObject = new msg();

    List<string> subliminalMessages = new List<string>();
    public FormHomePage()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
               }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (startSubliminal)
        {
            msgObject.Show();
            msgObject.BringToFront();
            msgObject.Activate();
        }

    }



    private void button1_Click(object sender, EventArgs e)
    {

        subliminalMessages.Add(txtBox1.Text);
        msgObject.LabelText = txtBox1.Text;
        txtBox1.Text = string.Empty;
        startSubliminal = true;
        msgObject.Show();
        msgObject.BringToFront();

    }

    private void timer2_Tick(object sender, EventArgs e)
    {
        msgObject.Hide();
    }    
}

你是如何在第一時間顯示第二種形式(消息形式)的? 你可能正在使用.Show() (對嗎?) ,這將使形式“偷”成焦點。 這同樣適用於.Activate().BringToFront()

相反,您可以做的是顯示消息表單並確保它保持在當前表單的頂部 ,然后再次激活當前/主表單。

這樣的事情應該有效:

var frm = new YourMsgForm();
frm.Show(this);
this.Activate();

這是一個演示:

顯示輔助表單而不中斷當前表單。

請注意,我使用.Show(this)而不是.Show() ,這是為了將當前表單設置為新表單的所有者 ,這樣我們保證新表單將保持在當前表單之上。 這相當於調用frm.Owner = this; 然后frm.Show();

確保表單保持最佳狀態的另一種方法是設置TopMost屬性而不是Owner屬性。 但是,這樣做會使新表單也在其他窗口之上(而不僅僅是您的應用程序)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM