-2

次のコードは、主な問題のアイデアです。私がやろうとしているのは、誰かがbutton1を押すと、タイマーが有効になってlabel1の値を継続的に変更できるようにすることです。ここでの主な問題は、TimerEventProcessor()からlabel、textboxなどのフォーム要素にアクセスする必要があることですが、それはできません。Form1を使用してみましたformm=new Form1(); しかし、それでも機能しません。何も表示されず、エラーも発生しません。

    static Timer mytimer = new Timer();
    static int counter= 1;

private static void TimerEventProcessor(Object myObject, EventArgs myEventArgs)
{   mytimer.Enabled = true;
    Form1 formm = new Form1();            
    formm.label1.Text = counter;
    counter++;
}


private void button1_Click(object sender, EventArgs e)
{
   myTimer.Tick += new EventHandler(TimerEventProcessor);

   myTimer.Interval = 1000;
   myTimer.Start(); 
}
4

1 に答える 1

2

新しいインスタンスを作成する代わりに、フィールドを非静的にして使用TimerEventProcessorする必要があります。また、毎回プロパティを設定する必要はありません。TimercounterthismyTimer.Enabled

Timer mytimer = new Timer();
int counter= 1;

private void TimerEventProcessor(object sender, EventArgs e)
{  
    this.label1.Text = counter;
    counter++;
}
于 2013-03-25T19:47:56.660 に答える