自定义控件缺乏标准属性

时间:2014-09-11 07:52:03

标签: c# winforms timer custom-controls programmatically-created

以下是一个名为JobTimer的自定义控件,它通过继承/扩展标准控件Timer来创建。目的:为了将名为JobID的自定义属性添加到控件中。

public class JobTimer : System.Windows.Forms.Timer
{
    private int IntJobID;
    public int JobID
    {
        get{return IntJobID;}
        set{IntJobID = value;}
    }
}

这些控件是在运行时以编程方式创建的。以下是执行此操作的代码:

public static void CreateTimer(int JobID) 
{
    JobTimer ControlJobTimer = new JobTimer();
    ControlJobTimer.Name = "JobTimer" + JobID.ToString(); //Error occurs here. 
    ControlJobTimer.Enabled = true;
    ControlJobTimer.JobID = JobID;
    ControlJobTimer.Interval = 30000;
    ControlJobTimer.Tick += new EventHandler(JobTimer_Tick);
    ControlJobTimer.Start(); 
}

我面临的问题是,我无法“设置”此控件的标准属性Timer.Name。

错误: NameSpace.JobTimer不包含'Name'的定义,并且没有扩展方法'Name'接受NameSpace.JobTimer类型的第一个参数(你是否缺少using指令或汇编引用?) ![在此输入图像说明] [1]

即使以下代码行应该将此控件的名称设置为“ControlJobTimer”

JobTimer ControlJobTimer = new JobTimer(); 

我不能在运行时“重命名”控件吗?据我所知,这对于标准控件是可行的,并且应该是自定义控件的可能选项。

我的要求是我希望能够为在运行时创建的计时器控件设置命名约定。请查看此内容并告诉我我缺少的内容以及是否有解决方法来实现此功能。

1 个答案:

答案 0 :(得分:0)

虽然Windows窗体设计器在“属性”窗口中显示(名称),但控件本身并没有Name属性 - 设计器只使用它来命名保存引用的成员变量控制。

虽然如你所说,你已经拥有了JobId,所以代码可以判断它是哪个计时器,但是没有什么可以阻止你添加一个Name属性。