将属性添加到现有类/控件中

时间:2014-05-21 13:20:07

标签: c# .net vb.net winforms

如何添加到图片框控件名为" defaultControl"的新属性? (控制类型),使用这个新属性,如:PictureBox1.defaultControl = dc
最简单/最快捷的方式

2 个答案:

答案 0 :(得分:3)

您需要扩展PictureBox类:

public class MyPictureBox : PictureBox
{
    public Control DefaultControl {get; set;}
}

可以使用Tag属性将对象附加到控件(无论出于何种原因):

PictureBox1.Tag = dc;

答案 1 :(得分:3)

控件只是一个直接或间接来自System.Windows.Forms.Control的类。您可以创建一个继承自PictureBox的新类,并为其添加一个新属性,就像对其他任何类一样。

您的新Control将自动显示在当前项目的工具箱中,并可以用作任何其他Control。您还可以在PictureBox文件中手动将PictureBoxEx的类型更改为Form1.Designer.cs。在对*.Designer.cs文件进行任何更改之前,请关闭设计器并保存表单。

<强> VB

Public Class PictureBoxEx
    Inherits PictureBox

    Private m_DefaultControl As Control
    Public Property DefaultControl() As Control
        Get
            Return m_DefaultControl
        End Get
        Set
            m_DefaultControl = Value
        End Set
    End Property
End Class

从VS 2010开始,您可以使用Auto-Implemented Properties

Public Property DefaultControl As Control

<强> C#

public class PictureBoxEx : PictureBox
{
    public Control DefaultControl { get; set; }
}

扩展现有控件是在winforms中创建新控件的一种非常强大的方法。您可以覆盖现有方法;添加新属性,方法和事件。如果要创建全新控件或从现有控件开始,以便更改其行为和外观,或者如果要添加新功能,请从Control派生控件。