星期二, 5月 31, 2016

[C#] 建立視窗控制代碼時發生錯誤

撰寫 ERP 時,跳出下圖 Exception,用中斷點查到問題點且寫個簡單範例也可以重現該問題

[C#] 建立視窗控制代碼時發生錯誤-1

簡化後的簡易範例,有兩個 Form
  • MDIForm:MDI Form,為起始 Form,Form1 要在 MDI Form 內
  • Form1:在 Load Event 內會呼叫 this.Hide(),Form1 上沒有任何控件
[C#] 建立視窗控制代碼時發生錯誤-2

MDIForm Layout:有個 Button 而已,用來呼叫 Form1

[C#] 建立視窗控制代碼時發生錯誤-3

MDIForm Code
namespace ExceptionDemo
{
    public partial class MDIForm : Form
    {
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 frm1 = new Form1();
            frm1.MdiParent = this;
            frm1.Show();
        }
    }
}
Form1 Code
namespace ExceptionDemo
{
    public partial class Form1 : Form
    {
        private void Form1_Load(object sender, EventArgs e)
        {
            this.Hide();
        }
    }
}
實際執行就會拋出 Exception

[C#] 建立視窗控制代碼時發生錯誤-4

用中斷點去看才發現,原來 Form1 New 出來後,並沒有執行 Load,是 frm1.Show() 才會執行,上述情況,Show() 程序中有 Hide() 會有所衝突,推測跟生命週期有關係,先筆記一下

沒有留言:

張貼留言