0

以下是通过继承/扩展标准控件 Timer 创建的名为 JobTimer 的自定义控件。目的:为了得到一个名为 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”的定义,并且找不到接受 NameSpace.JobTimer 类型的第一个参数的扩展方法“Name”(您是否缺少 using 指令或程序集引用?)![输入图片此处描述][1]

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

JobTimer ControlJobTimer = new JobTimer(); 

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

我的要求是我希望能够为运行时创建的计时器控件设置命名约定。请调查一下,让我知道我缺少什么以及是否有解决方法来实现此功能。

4

1 回答 1

0

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

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

于 2014-09-11T09:55:07.437 回答