MessageBox.Show问题

时间:2012-11-16 12:03:06

标签: 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?", "Attenzione", MessageBoxButtons.YesNo, MessageBoxIcon.Warning );
        if ( result == System.Windows.Forms.DialogResult.Yes )
        {
            DoSomething();
        }
        else
        {
            DoSomethingElse();
        }
    }
    Catch (Exception ex)
    {
        LogExceptio(ex);
    }
} 

但出于特定Windows Form的某些原因,MessageBox未显示。 如果我按 Enter ,就像我点击YES一样继续; 如果按 ALT 键,MessageBox会神奇地出现在屏幕上。

有什么想法吗? 我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:2)

尝试为消息框指定所有者(据我记得,应该有包含该参数的重载方法)。所有者应该是当前打开的窗口。

答案 1 :(得分:0)

我通过设置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);
}
} 

答案 2 :(得分:0)

由于在应用程序中使用了一些线程,MessageBox可能会出现在后台。  所以,你必须在lambda表达式中传递MessageBox,如下所述:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        int customerID = in.nextInt();
        int sum = 0;
        while(customerID > 0) {
            int Reminder = customerID % 10;
            sum = sum + Reminder;
            customerID = customerID / 10;   
        }
        if(sum % 5 == 0 || sum % 8 == 0) {
            System.out.println("Lucky Customer");
        } else {
            System.out.println("Unlucky Customer");
        }
        if(sum <0) {
            System.out.println("Invalid Input");
        }
    }
}

希望它会帮助你......