0

ウィンドウフォームで、タイマーコントロールを動的に作成しているときに、タイマーコントロールのオブジェクトを区別するにはどうすればよいですか?タイマーコントロールはn個です...実行時に表示されます。助けて ありがとう..

4

2 に答える 2

1

メインフォームにDictionaryタイプのインスタンスフィールドを作成するだけで、タイマーのTagプロパティを使用することもできます。

class MainForm(Form)
{

    Dictionary<string, Timer> timers;

    public MainForm()
    {
        InitializeComponents();
        timers = new Dictionary<string, Timer>();
    }    


    public Timer AddTimer( string name, int interval, bool enabled, int id)
    {
          Timer t = new Timer();
          t.Interval = interval;
          t.Enabled = enabled;
          t.Tag = id;
          t.Ticks += new EventHandler(TimerEventProcessor);
          timers.add(name, t);

          return t;
    } 

    public Timer GetTimer(string name)
    {
        if (timers.ContainsKey(name))
        {
              return timers[name];
        }
        else
        {
              return null;
        }
    } 

       private static void TimerEventProcessor(Object myObject,
                                            EventArgs myEventArgs) {
             Timer sourceTimer = myObject as Timer;
       }
    }
}
于 2012-10-16T05:37:32.683 に答える
0

タイマー制御をスレッドに置き換えることをお勧めします。無制限のタイマー制御には、スレッドよりも多くのリソースが必要になります。

タイマーコントロールを続行する場合は、配列に作成された各タイマーのコントロール名を保存することをお勧めします。配列を検索して、必要なタイマーを選択できます。

于 2012-10-16T05:39:39.380 に答える