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 に答える