C# 显示问题
我有很多这样的代码,通常都能正常工作C# 显示问题,c#,winforms,dialog,messagebox,C#,Winforms,Dialog,Messagebox,我有很多这样的代码,通常都能正常工作 private void button_Click(object sender, EventArgs e) { try { DialogResult result; result = MessageBox.Show( "Questa operazione potrebbe richiedere alcuni minuti,\r\nsei sicuro di voler continuare?", "Attenz
private void button_Click(object sender, EventArgs e)
{
try
{
DialogResult result;
result = MessageBox.Show( "Questa operazione potrebbe richiedere alcuni minuti,\r\nsei sicuro di voler continuare?", "Attenzione", MessageBoxButtons.YesNo, MessageBoxIcon.Warning );
if ( result == System.Windows.Forms.DialogResult.Yes )
{
DoSomething();
}
else
{
DoSomethingElse();
}
}
Catch (Exception ex)
{
LogExceptio(ex);
}
}
但是由于某些原因,在特定的Windows窗体上
没有显示MessageBox
。
如果我按Enter键,它将继续,就像我单击YES一样;
如果我按ALT键,MessageBox会神奇地出现在屏幕上
有什么想法吗?
如何解决此问题?尝试为消息框指定所有者(据我所知,应该有包含该参数的重载方法)。所有者应该是当前打开的窗口。我通过设置DataGrid.visible=false来解决此问题
private void button_Click(object sender, EventArgs e)
{
try
{
DialogResult result;
DataGrid.visible=false;
result = MessageBox.Show( "Questa operazione potrebbe richiedere alcuni minuti,\r\nsei sicuro di voler continuare?", "Attenzione", MessageBoxButtons.YesNo, MessageBoxIcon.Warning );
if ( result == System.Windows.Forms.DialogResult.Yes )
{
DoSomething();
}
else
{
DoSomethingElse();
}
}
DataGrid.visible=true;
Catch (Exception ex)
{
LogExceptio(ex);
}
}
由于在应用程序中使用了一些线程,MessageBox可能会出现在后台。 因此,您还必须在lambda表达式线程中传递MessageBox,如下所述
new Thread(() =>
{
MessageBox.Show("Your Text");
}).Start();
希望它能帮助您……我已尝试设置所有者,但没有改变,我仍然有相同的问题。无论如何谢谢更新:在
表单中
我有一个DataGridView
,似乎只有当我有一些彩色行时,MessageBox
问题才会追加,我在RowPrePaint
事件中对这些行上色。实际上我已经对DataRow.Cells[“Cells”]。Value=false代码>在myDataGridView_RowPrePaint
中,一切都在正常工作。