我刚开始使用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();
}
}
}
}
答案 0 :(得分:4)
请勿在{{1}}内致电Form1_FormClosing();
。不确定您是否需要,但Form1_Load
和No
都会关闭表单。我怀疑你有表格的Form1_Load Yes
Load`事件。
[编辑]
您评论显示的消息框会发生,因为它正在表单的“加载”中显示。表单没有进行自我渲染的更改。
答案 1 :(得分:0)
您在此处所做的是向用户显示一条消息,告诉他/她该应用程序的新版本可用。
现在,他/她有什么选择?
如果答案为否:您关闭应用
如果答案是肯定的:您也将其关闭
这正是你在这里所做的。
请让您的问题更清晰,以便我们为您提供帮助。
答案 2 :(得分:0)
尝试将来电MessageBox.Show(message, caption, ...
更改为MessageBox.Show(this, message, caption, ...
- 这会使消息框模态化为表单。要检查的另一件事是如何显示表单 - 您使用VS生成的默认Main
方法还是对其进行了任何更改?
答案 3 :(得分:0)
如果您想在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
}
}
答案 4 :(得分:0)
你可以试试这种东西
DialogResult result = MessageBox.Show(message, caption,
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
答案 5 :(得分:0)
究竟是什么问题???您的意思是说您无法查看消息框本身或仅查看其中的内容吗?
如果未显示消息框本身,则表示未正确调用Form1_Load事件。尝试删除该事件并通过右键单击表单再次创建它 - >属性。在事件选项卡中,单击“加载”,然后在“加载”事件内再次调用Form1_FormClosing方法。
尝试在我的系统中执行,表单按预期工作。