我有很多像这样的代码,它通常可以使用
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会神奇地出现在屏幕上。
有什么想法吗? 我该怎么做才能解决这个问题?
答案 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");
}
}
}
希望它会帮助你......