C#.NET - 如何从现有的Windows窗体控件继承

时间:2009-09-29 11:14:09

标签: c# .net forms inheritance

我习惯使用visual C ++。在学习C#.NET时,我倾向于尝试找到在VC ++中完成工作的等效方法。

当我在C ++中有一个按钮时,为了完全控制它,我创建了一个派生自CButton的类(相当于.NET中的System.Windows.Forms.Button),然后将此类设置为我的按钮的类型为了将所有事件和覆盖路由到我的代码中。

在C#中,我还没有找到一种相同的方法来做到这一点。似乎没有办法设置应该从哪个类创建控件,我甚至不打算尝试替换创建对象的自动生成的代码,因为它很可能在下一分钟被丢弃。

使用我自己的类来引导用户控件的正确方法是什么?

编辑:我应该澄清一下,我有兴趣将自定义类添加到现有项目中。到目前为止,大多数响应都提供了将其添加到现有项目的非工作方式,或者使用组件(DLL)创建外部库的工作方式,但这对我的特定情况来说有点过分。

4 个答案:

答案 0 :(得分:2)

没有任何技巧。使用Visual Studio创建一个新的.cs源文件或类,记得在文件顶部包含正确的using System.Windows.Forms语句,然后像往常一样继承(注意:在.NET中,没有类与命名惯例CWhatever)。

答案 1 :(得分:0)

例如,如果从System.Windows.Forms.Button派生,则新控件将在工具箱中可用。新选项卡应显示在顶部,并将命名为[Project Name] Components。您只需将其拖放到表单上即可。

至于更改表单上已有的控件类型,我已成功更改了设计器生成的代码.cs文件中的类型。

这是关于creating custom .net controls:

的精彩文章

本文讨论了evey可能的场景,包括使用继承,并提供了大量的示例代码。

编辑:

将此添加到您的项目中:

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

然后构建项目。然后,DerivedTextBox应该可以在ToolBox中使用。

答案 2 :(得分:0)

您可以使用自己的代码覆盖所需的函数,或者只是创建一个派生自System.Windows.Forms.Button的新用户控件。

这取决于您是否需要创建一个将多次使用的新控件,或者这是您需要针对特定​​情况执行的操作。

编辑:查看MSDN文档:

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

答案 3 :(得分:0)

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


public class WindowsFormClass : MyClass
{
....
}

类似地,您可以创建任何自定义类并从Control类(Button,Textbox,Grid等)派生它,覆盖其方法以添加您的功能,然后从中创建自定义对象。它可以在工具箱中使用,您可以在项目中开始使用它。