第一個C#程序的坑爹問題

本菜初學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彈出兩次


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章