Как использовать объект внутри EventHandler - PullRequest
0 голосов
/ 13 ноября 2011

Это мой код внутри моего 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 у меня есть и EventTandler dtTick, чтобы сделать что-то, и 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 ().

Ответы [ 2 ]

2 голосов
/ 13 ноября 2011

Вы не можете заставить это работать таким образом - объявленный в конструкторе 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();
    }
}
1 голос
/ 13 ноября 2011

В вашем коде позади файла представьте Таймер как открытый / защищенный или закрытый элемент или поле.

private DispatcherTimer dt = null; 

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

private void startButton_Click(object sender, RoutedEventArgs e) 
{ 
     if (this.dt != null)
              this.dt.Start(); 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...