程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET組件編程(4) 用戶自定義Property Editor的調試

.NET組件編程(4) 用戶自定義Property Editor的調試

編輯:關於.NET

園子裡的高人太多了,第2章遺留下來的Property DefaultValueAttribute問題解決掉了,感謝Colin Han的幫助,我對DefaultValueAttribute的理解有點誤解了,msdn中對DefaultValueAttribute的說明為 : “可視化設計器可以使用默認值重置成員的值。代碼生成器也可使用默認值確定是否為成員生成代碼 ”,我把其理解為了創建Component時,對標示有DefaultValueAttribute的Property產生默認值,Colin Han的解釋為:“這個特性可以幫助IDE減少Code生成的工作,如果設計時某個標示有 DefaultValueAttribute的Property的值和DefaultValue的值一樣,IDE將不會為這個屬性生成代碼;否則 ,IDE會自動在InitializeComponent中添加的代碼”

舉例說明:

Customer Component有個Age Property,聲明如下

[Description("Customer's Age"), DefaultValue(20)]
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }

有個窗體Form1,在Form1上貼有一個Customer類型的customer1,在設計時對Age設值為20,Form1的 InitializeComponent()為

private void InitializeComponent()
        {
            this.customer1 = new Components.Customer();
            //
            // customer1
            //
            this.customer1.Address = null;
            this.customer1.CreateTime = new System.DateTime(((long)(0)));
            this.customer1.Id = null;
            this.customer1.Sex = null;
        }

如果在設計時對Age設值為40,Form1的InitializeComponent()為

private void InitializeComponent()
        {
            this.customer1 = new Components.Customer();
            //
            // customer1
            //
            this.customer1.Address = null;
            this.customer1.Age = 40;
            this.customer1.CreateTime = new System.DateTime(((long)(0)));
            this.customer1.Id = null;
            this.customer1.Sex = null;
        }

第二種情況比第一種多了句this.customer1.Age = 40;

本來這章准備講Component Designer的,但是在第3章的評論中chnking朋友問我,用戶自定義 Property Editor中如何調試的問題,我原來在開發Component的過程都是用MessageBox來彈出信息,但是 lichdr提出了個更好的辦法,監視進程,這樣就能對用戶自定義的Property Editor進行調試,我在vs 6.0裡用這種方法調試過,但是在.net環境上我從來我想到過,我想很多朋友在開發過程也可能會遇到這 樣的問題,至少我是遇到了,而且走了很多的彎路,所以把它作為單獨的一章進行講解下,在這裡再次謝 謝lichdr。

下面我用第三章的源代碼進行演示下:http://www.bianceng.net/dotnet/201212/662.htm

先打開一個vs 2005的IDE(IDE1),在IDE1中打開WindowsApplication9解決方案,在 Components.Demo3.cs中設置如下斷點

再打開一個vs 2005的IDE(IDE2),在IDE1做如下的操作:

在IDE2中打開WindowsApplication9解決方案,並對Demo3的Grade Property設值時,IDE1中會發生斷 點調試中斷。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved