C#Form和Load和Shown这两个玩意容易混淆不?
案例测试一下:
- 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 LoadShown
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private string[] mMessage = new string[] { "首先调用","第二调用"};
- private int mIndex = 0;
- private void Form1_Load(object sender, EventArgs e)
- {
- MessageBox.Show("Form1_Load" + mMessage[mIndex++]);
- }
- private void Form1_Shown(object sender, EventArgs e)
- {
- MessageBox.Show("Form1_Shown" + mMessage[mIndex++]);
- }
- }
- }
Form.Load 事件
在第一次显示窗体前发生。注意这里有一个前字。明显它的触发要比Shown中的早。
Form.Shown 事件
只有在首次显示窗体时才会引发 Shown 事件;随后执行的最小化、最大化、还原、隐藏、显示或无效化和重新绘制操作都不会引发该事件。
C#Form和Load和Shown从此不再混淆。
参考文献:
https://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.load(v=vs.110).aspx
https://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.shown.aspx