2011-05-18 101 views
0

爲了某種目的,在將.NET控件對象序列化爲自定義對象(即MyControlObject)到另一個進程的過程中,我需要以自定義方式重新繪製這些控件。我需要知道它是什麼類型(按鈕,文本框,組合框,TextField,Calander,ToolStrip,TtoolstripMenu,RichTextBox,TabControl或TreeView)。我可能需要一種typeOf(RichTextBox) == RichTextBox來檢查。基於定製的序列化後.NET控件的類型?

回答

0

沒錯:

if (sayMyControlObject.GetType() == typeof(TextBox)) 

if (sayMyControlObject is TextBox) 

將做到這一點,但是這取決於你每做什麼它可能會更好的來封裝到一個switch語句,像這樣:

switch (config.GetType().Name) 
{ 
     case "TextBox": 

     break; 

     case "ComboBox": 

     break; 

     //etc... 
} 
+0

其實我已經序列化「控制」整個對象變成一些自定義對象(CustomControl)並逐位轉換並將數據移動到「CustomControl」對象。所以這沒有可用的「GetType」函數,它只是具有System.Forms.Control中的所有屬性。 – Usman 2011-05-18 15:53:42

+0

它應該這樣做,如果它是繼承自「控制」,它不是一個屬性它的方法 – w69rdy 2011-05-18 15:57:20

+0

如果我將從控制繼承它,它將通過一個異常「System.Forms.Controls」不能被序列化... 所以我沒有繼承它,我想我需要一些自定義邏輯,說MyCustomControl裏面的一些對象,它會告訴當它被序列化到其他進程時它是什麼樣的控制 – Usman 2011-05-18 16:00:00

0
Control c = yourControl; 
Type controlType = yourControl.GetType(); // will give you the type 
string controlTypeName = controlType.Name; // will give you the name of the type 
相關問題