2009-09-29 66 views
0

我習慣於在Visual C++中工作。在學習C#.NET時,我傾向於嘗試找到在VC++中完成事情的等效方法。C#.NET - 如何從現有的Windows窗體控件繼承

當我在C++中有一個按鈕時,爲了完全控制它,我創建了一個派生自CButton的類(相當於.NET中的System.Windows.Forms.Button),然後將此類設置爲我的類型按鈕,以獲取所有事件和覆蓋路由到我的代碼。

在C#中,我還沒有真正找到相同的方法來做到這一點。似乎沒有辦法設置應該從哪個類創建控件,而且我甚至都沒有試圖替換創建該對象的自動生成的代碼,因爲它可能會在下一分鐘被丟棄。

使用我自己的類來控制用戶控件的正確方法是什麼?

編輯:我應該說明我有興趣將我的自定義類添加到現有項目。到目前爲止,大多數響應或者提供了將其添加到現有項目的非工作方式,或者使用組件(DLL)創建外部庫的方式,但對於我的特定情況來說這有點矯枉過正。

回答

2

它沒有任何竅門。創建一個新的 。cs源文件或使用Visual Studio的類,請記住在文件頂部包含正確的using System.Windows.Forms語句,然後像平常一樣繼承(注意:在.NET中,沒有命名約定CWhatever的類)。

0

例如,如果您從System.Windows.Forms.Button派生,您的新控件將在工具箱中可用。一個新標籤應該出現在頂部,並且將被命名爲[Project Name]組件。您可以將它拖放到表單上。

至於改變已經在窗體上的控件的類型,我已經成功改變了設計器生成的代碼.cs文件中的類型。

這裏有creating custom .net controls:

一大篇文章論述埃維可能的方案,包括使用繼承,並提供了大量的示例代碼。

編輯:

添加到您的項目:

public class DerivedTextBox: System.Windows.Forms.TextBox 
{ 
} 

然後生成項目。 DerivedTextBox應該在工具箱中可用。

+0

它實際上並沒有發生在我身上。儘管我是從一個控件派生出來的,但是工具箱中沒有任何東西出現。您提供的文章似乎只包含了自定義控件的創建,即新類型的控件。這不是我想要的,而是從現有的控件繼承,以便將事件等路由到我的代碼中。 – sharkin 2009-09-29 11:45:57

+0

重新閱讀文章並尋找「Format Mask Control」。這向您展示瞭如何使用繼承。他們正在擴展一個常規的.net文本框來添加額外的功能。 – Joepro 2009-09-29 11:48:59

+0

另外,在您的派生類在工具箱中可用之前,您必須構建您的項目。 – Joepro 2009-09-29 11:49:44

0

您可以用自己的代碼重寫所需的函數,也可以簡單地創建一個從System.Windows.Forms.Button派生的新用戶控件。

這取決於您是否需要創建一個新的控件,該控件將被多次使用,或者如果這是您僅需要爲特定情況執行的操作。

編輯:有一個在MSDN文檔:

http://msdn.microsoft.com/en-us/library/5h0k2e6x(VS.71).aspx

0
abstract class MyClass : Windows.Form 
{ 
.... 
} 


public class WindowsFormClass : MyClass 
{ 
.... 
} 

與之相似,你可以創建任何自定義類和控制類派生它(按鈕,文本框,電網等),重寫它的方法來添加你的功能,然後創建一個自定義對象。它將在工具箱中供您使用,您可以在項目中開始使用它。

+0

「創建一個自定義對象」的步驟是什麼? – sharkin 2009-09-29 11:43:37

+0

看到這個 - > http://ondotnet.com/pub/a/dotnet/2002/03/18/customcontrols.html。您也可以參考其他人發佈的網站。 – Bhaskar 2009-09-29 12:57:35