[英]Windows Form Application in C# Closes Immediately
我刚刚开始使用C#编程,并且试图使Windows窗体应用程序正常运行。 但是,无论何时运行它,它都会打开并立即关闭。 每当我在Java中键入类似的代码时,GUI都不会出现问题。 我在这里想念一些小东西吗?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Form1_FormClosing();
}
private void Form1_FormClosing()
{
const string message =
"There's an updated version of this program available. Would you like to download now?";
const string caption = "Please update";
var result = MessageBox.Show(message, caption,
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
// If the no button was pressed ...
if (result == DialogResult.No)
{
MessageBox.Show("Program will close now. If you want to use this program please update to the newest version.", "Please update");
this.Close();
}
else if (result == DialogResult.Yes)
{
System.Diagnostics.Process.Start("http://www.google.com");
this.Close();
}
}
}
}
不要调用Form1_FormClosing();
在Form1_Load
。 不确定是否要这样做,但是“ No
和“ Yes
都将关闭表格。 我怀疑您有Form1_Load attached to the
窗体attached to the
Load`事件。
[编辑]
您评论显示该消息框将发生,因为它将显示在窗体的负载中。 表单没有更改以呈现自身。
您在这里所做的是向用户显示一条消息,告诉他(她)该应用程序有新版本可用。
现在,他/她有什么选择?
如果答案是否定的: 关闭应用程序
如果是的话: 您也将其关闭
这正是您在这里所做的。
请让您的问题更清楚,以便我们为您提供帮助。
尝试将调用MessageBox.Show(message, caption, ...
更改为MessageBox.Show(this, message, caption, ...
这会使消息框成为表单模态。另外要检查的是如何显示自己的表格-您使用的是VS生成的默认Main
方法,还是已对其进行了任何更改?
如果要在Form_Load()
结束应用程序。 使用FormClosing()
事件,并调用this.Close();
。
例:
private void Form1_Load(object sender, EventArgs e)
{
this.Close(); //this will call Form_Closing()
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//do stuff
if (result == DialogResult.No)
{
e.Cancel = true; // if you don't want to close your form
}
else
{
// do stuff on closing form
}
}
你可以尝试这种东西
DialogResult result = MessageBox.Show(message, caption,
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
到底是什么问题??? 您是说您无法查看消息框本身还是仅查看其中的内容?
如果未显示消息框本身,则表示未正确调用Form1_Load事件。 尝试删除该事件,然后右键单击表单-> Properties,再次创建该事件。 在事件选项卡中,单击“加载”,然后在“加载”事件内部再次调用Form1_FormClosing方法。
尝试在我的系统中执行,并且表格按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.