2016-07-16 65 views
0

我有一個簡單的Winforms應用程序,它會通知我何時將票據添加到我的票證。我面臨的問題是,當應用程序被最小化時,messagebox不會顯示在我打開的所有其他窗口和程序的前面。強制MessageBox.Show頂部顯示

我的代碼是:

private void button1_Click(object sender, EventArgs e) { 
    DialogResult result1 = MessageBox.Show("Add some notes to your current ticket?", 
     "Add Notes", 
     MessageBoxButtons.YesNo); 


    if (result1 == DialogResult.Yes) { 
     Timer tm; 
     tm = new Timer(); 

     tm.Interval = int.Parse(textBox2.Text); 
     tm.Tick += new EventHandler(button1_Click); 

     string pastebuffer = DateTime.Now.ToString(); 
     pastebuffer = "### Edited on " + pastebuffer + " by " + txtUsername.Text + " ###"; 
     Clipboard.SetText(pastebuffer); 

     tm.Start(); 
    } else if (result1 == DialogResult.No) { 
     //do something else 
    } 

我的理解是,我需要添加TopMost = True。但我無法看到在我的代碼中添加了哪些內容?

回答

2

當您顯示您的MessageBox時,將主表單上的TopMost屬性設置爲trueMessageBox將模態到最頂端的主要形式,使MessageBox最頂部

在顯示MessageBox之後,您可以輕鬆地將TopMost屬性重新設置爲false。

private void button1_Click(object sender, EventArgs e) 
{ 
    this.TopMost = true; // Here. 

    DialogResult result1 = MessageBox.Show("Add some notes to your current ticket?", 
    "Add Notes", 
    MessageBoxButtons.YesNo); 

    this.TopMost = false; // And over here. 

    if (result1 == DialogResult.Yes) { 
     Timer tm; 
     tm = new Timer(); 

     tm.Interval = int.Parse(textBox2.Text); 
     tm.Tick += new EventHandler(button1_Click); 

     string pastebuffer = DateTime.Now.ToString(); 
     pastebuffer = "### Edited on " + pastebuffer + " by " + txtUsername.Text + " ###"; 
     Clipboard.SetText(pastebuffer); 

     tm.Start(); 
    } 
    else if (result1 == DialogResult.No) 
    { 
     // Do something else. 
    } 
} 
+0

像這樣:>>>>'公共Form1中() { 的InitializeComponent(); TopMost = true; }' – PriceCheaperton

+0

你願意告訴我這是多麼容易嗎? – PriceCheaperton

+0

這將使您的應用程序中的所有對話框形式成爲最頂層。 – 2016-07-16 06:40:26