强制 MessageBox.Show 显示在顶部
Force MessageBox.Show to display on top
我有一个简单的 winforms 应用程序,它会通知我何时向我的工单添加注释。我面临的问题是,当应用程序最小化时,消息框不会显示在所有其他 windows 和我打开的程序之前。
我的代码是:
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
。但是我看不到在我的代码中添加它的位置?
当您显示 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.
}
}
试试这个 MessageBoxOptions.ServiceNotification :
DialogResult res = MessageBox.Show(some text, "ATENCIÓN", MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,
MessageBoxOptions.ServiceNotification);
我有一个简单的 winforms 应用程序,它会通知我何时向我的工单添加注释。我面临的问题是,当应用程序最小化时,消息框不会显示在所有其他 windows 和我打开的程序之前。
我的代码是:
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
。但是我看不到在我的代码中添加它的位置?
当您显示 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.
}
}
试试这个 MessageBoxOptions.ServiceNotification :
DialogResult res = MessageBox.Show(some text, "ATENCIÓN", MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,
MessageBoxOptions.ServiceNotification);