程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Visual Studio自定義調試窗體兩個小技巧

Visual Studio自定義調試窗體兩個小技巧

編輯:關於.NET

這篇文章講述如何自定義你的調試窗體。這些技巧在你調試應用程序的時候 是非常有用的。當你調試的時候,你可能希望簡化調試窗體的信息,或者在調試 窗體上除去對你不重要的不必要的信息,這篇文章將會幫助到你。本文翻譯: Few Tips on Customizing Debugging Window View in Visual Studio 。

使用DebuggerBrowsable特性可以自定義調試窗體。

使用DebuggerDisplay特性可以自定義調試信息的顯示。

要使用這些特性,需要引用System.Diagnostics命名空間。

技巧1、使用DebuggerBrowsable特性

你可以通過在屬性上使用 DebuggerBrowsable特性來自定義調試窗體。這些特性可以用任何屬性、字段和 索引上。 DebuggerBrowsable的構造函數需要一個DebuggerBrowsableState 參 數。 DebuggerBrowsableState用來指定調試信息在窗體上顯示的方式。

它有三個狀態:

1、Collapsed :如果設置DebuggerBrowsableState為 Collapsed 。那麼調試信息折疊顯示。默認為Collapsed

2、Never :調 試窗體不顯示調試信息

3、RootHidden :隱藏調試信息的根元素, 只顯示子元素信息,想了解更多,看MSDN。

下面我將通過一個例子敘述如何使用DebuggerBrowsable 和 DebuggerBrowsableState。開始之前,看下面這段代碼:

01 class Program
02 {
03   static void Main(string[] args)
04   {
05     List student = new List();
06     student.Add(new Student { Roll = 1, Name =  "Abhijit", Marks = 87, Addresses = new Address { Address1  = "add1", Address2 = "add2" } });
07     student.Add(new Student { Roll = 2, Name =  "Abhishek", Marks = 41, Addresses = new Address { Address1  = "add3", Address2 = "add4" } });
08     student.Add(new Student { Roll = 3, Name =  "Rahul", Marks = 67, Addresses = new Address { Address1 =  "add5", Address2 = "" } });
09     student.Add(new Student { Roll = 4, Name =  "Sunil", Marks = 91, Addresses = new Address { Address1 =  "add11", Address2 = "add122" } });
10     student.Add(new Student { Roll = 5, Name =  "Atul", Marks = 71, Addresses = new Address { Address1 =  "add12", Address2 = "add222" } });
11     student.Add(new Student { Roll = 6, Name =  "Kunal", Marks = 71, Addresses = new Address { Address1 =  "add12", Address2 = "add222" } });
12   }
13   ///
14   /// Student Class
15   ///
16
17   class Student
18   {
19     public int Roll { get; set; }
20     public string Name { get; set; }
21     public int Marks { get; set; }
22     public Address Addresses { get; set; }
23   }
24
25   ///
26   /// Address of Students
27   ///
28   class Address
29   {
30
31     public string Address1 { get; set; }
32
33     public string Address2 { get; set; }
34   }
35
36 }

下面,先看一下不使用這些特性是什麼樣的效果。我在main 函數的結尾放置 一個斷點。你可以得到下面的調試窗體。

從上圖中可以看到有6個student對象,每個對象的值都不同。Addresses是類 Address的對象,它的調試信息值是隱藏的。

現在,我想要看到address的所有屬性信息,隱藏Marks 屬性。為了實現這樣 的需求,需要為給student 類中的Marks 和Addresses屬性添加 DebuggerBrowsable特性。

調試信息顯示如下圖:

技巧2、使用DebuggerDisplay特性

使用DebuggerDisplay可以定義類和字段在調試窗體中如何顯示。使用 DebuggerDisplay可以改變調試窗體中顯示的信息和變量,使它顯示你想要的信 息。

看下面沒有使用DebuggerDisplay 的調試窗體。

默認情況下,每一個study對象你只得到NameSpace.ClassName這樣的顯示信 息。我們可以使用DebuggerDisplay來自定義顯示的信息。 DebuggerDisplay  構造函數需要顯示名作為參數。你可以傳遞指定參數來顯示。做如下設置:

看下效果:

使用DebuggerDisplay的時候必須注意,在{}中必須給出類的正確屬性。

如我將Roll寫成Rolls,如下圖:

調試窗體會提示:The name 'Rolls' does not exist in the current context。如下圖:

總結:本文講述了使用DebuggerBrowsable 和DebuggerDisplay兩個特性來自 定義調試窗體的顯示。當你調試一個非常復雜的對象時,這個是非常有用的,它 可以使你的調試窗體非常簡單。

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