據我所知,DispatcherTimer的Tick事件需要用EventArgs調用,而同一個事件調用一些按鈕的動作,需要用RoutedEventArgs調用。顯然,我無法直接調用按鈕的事件。我的問題是:有什麼辦法來實現這一點,無論如何?如何實現一個調用WPF C#中的按鈕事件的計時器?
private void song_timer_Tick(object sender, EventArgs e)
{
if (playing == true)
{
lbl_curent_time.Text = audio_device.audioFileReader.CurrentTime.ToString();
if (music_state_progress.Value < music_state_progress.Maximum)
{
music_state_progress.Value = music_state_progress.Value + 1;
taskbar.SetProgressValue(Convert.ToInt32(music_state_progress.Value), Convert.ToInt32(music_state_progress.Maximum));
}
if (lbl_curent_time.Text == audio_device.audioFileReader.TotalTime.ToString())
if (music_list.SelectedIndex < music_list.Items.Count - 1)
{
btn_next_Click(sender, e);
music_list_DoubleClick(sender, e);
}
else if (repeat_checkbox.IsChecked == true)
{
music_list.SelectedIndex = 0;
music_list_DoubleClick(sender, e);
}
else
{
btn_stop_Click(sender, e);
lbl_curent_time.Text = "00:00:00.0000000";
lbl_max_time.Text = "00:00:00.0000000";
}
}
}
是否使用'EventArgs'按鈕單擊處理程序? –
Nope,RoutedEventArgs,因爲它是WPF所必需的。 –
然後,我會建議將代碼提取到一些常見的地方,並從按鈕點擊處理程序和您的滴答處理程序中調用該方法。那麼你不必擔心它。 –