繁体   English   中英

C#中的Windows窗体应用程序立即关闭

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM