EventHandlerの内部でオブジェクトを使用する方法

それは私のMainPage.xaml.cs内のコードです

public MainPage()
{
    InitializeComponent();
    DispatcherTimer dt = new DispatcherTimer();
    dt.Interval = new TimeSpan(0, 0, 0, 0, 1000);//1 Second
    dt.Tick += new EventHandler(dtTick);
}

今私が持っているMainPage Constractorの後、dtTick
EventHandlerを実行して、Timerを動作させるための開始ボタンのEventHandler

void dtTick(object sender, EventArgs e)
{
    var time = DateTime.Parse(theTimer.Text);
    time = time.AddSeconds(1);
    theTimer.Text = time.ToString("HH:mm:ss");
}

private void startButton_Click(object sender, RoutedEventArgs e)
{
     dt.Start();
}

だから私の質問はどのように dt.Start();
を作ることができるのですか?それはMainPage()にあるオブジェクト上で呼び出されたメソッドなのです。

ベストアンサー

このように動作させることはできません。コンストラクタで宣言された dt
は、コンストラクタのみにスコープされているため、そこからアクセスすることはできません。

必要なことは、モジュールレベルで dt
を宣言してからMainPage.xaml.cs内のどこにでもアクセスできます:

public class MainPage
{

    private DispatcherTimer _dt;

    public MainPage()
    {
        _dt = new DispatcherTimer();
    }

    private void startButton_Click(object sender, RoutedEventArgs e)
    {
         _dt.Start();
    }
}

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です