本菜初学C#了,有个小程序:MessageBox点是就显示窗体,否则结束
编译环境VS2012 .net 4.5
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace P7_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
}
void Form1_Load(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("kkk", "adf", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (result == DialogResult.Cancel)
{
this.Close();
}
else if (result == DialogResult.OK)
{
this.FormClosing += Form1_FormClosing;
}
}
void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("sadf", "adf", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No)
{
e.Cancel = true;
}
}
}
}
咦?为啥弹窗两次呢?
后来找大牛问了下,问题出在
this.Load += Form1_Load;
实际上,现在不填充Load成员也会跑一遍Form1_Load了,所以这行代码会导致MessageBox弹出两次