2016-07-16 5 views
0

私はチケットにメモを追加するときに私に通知する簡単なwinforms applがあります。私が直面している問題は、アプリケーションが最小化されると、メッセージボックスが他のすべてのウィンドウと私が開いているプログラムの前に表示されないということです。強制的に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プロパティがtrueに設定されます。 MessageBoxは、一番上のメインフォームのモーダルになります。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

これは、アプリケーション内のすべてのダイアログフォームを最上位にします。 –

関連する問題