2011年5月16日 星期一

C# 辨斷Form/UserControl在Design mode?

使用VS時, 在Designer查看Form, 或將UserControl拉進designer,
會因為一些初始操作而產生exception, 像使用外部資源(資料庫連線)等,
這些操作其實在design模式並不需要,
那要如何辨斷Form/UserControl是在Design模式下, 進而忽略這些操作呢?

可以使用Form/UserControl的屬性, DesignMode.
DesignMode在使用上有限制, 它在constructor內無效(always return false),
於是我們將一些design模式下不需要的操作移到load handler裡,
當它是design模式就直接return, 忽略掉這些操作:


        public Form1()
        {
            InitializeComponent();

            // Load handler
            this.Load += new EventHandler(Form1_Load);
        }

        void Form1_Load(object sender, EventArgs e)
        {
           
            if (this.DesignMode) // 如果是design模式, 直接return.
                return;
           
            // Design模式下不需要的操作, eg: 資料庫連線
        }

沒有留言:

張貼留言