-1

私が試みたのは、次の方法で値を取得することでしたが、うまくいきませんでした:

private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
    axWindowsMediaPlayer1.Ctlcontrols.play();
    axWindowsMediaPlayer1.Ctlcontrols.currentItem =
                axWindowsMediaPlayer1.currentPlaylist.Item[listBox1.SelectedIndex];
    backgroundWorker2.RunWorkerAsync();
}

private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
    double val = 100*axWindowsMediaPlayer1.Ctlcontrols.currentPosition/axWindowsMediaPlayer1.currentMedia.duration;
    TaskbarManager.Instance.SetProgressValue((int)val,100);
}

また、進捗を停止するための行をどこに置くかはわかりませんが、とにかく進捗を機能させることができないため、それについて考えるのは少し早いと思います。

backgroundWorker の使用方法や値の更新方法に問題がありますか?

前もって感謝します、

~~hlfrmn

編集:

private void TaskbarProgressValueDeterminator()
    {
        TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
        while (axWindowsMediaPlayer1.Ctlcontrols.currentPosition < axWindowsMediaPlayer1.currentMedia.duration)
        {
            TaskbarManager.Instance.SetProgressValue((int)(100 * axWindowsMediaPlayer1.Ctlcontrols.currentPosition / axWindowsMediaPlayer1.currentMedia.duration), 100);
        }
        TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress);
    }
4

1 に答える 1

1

バックグラウンド ワーカーは、進行状況を 1 回だけ更新します。トラックの再生中に進行状況を繰り返し更新するには、while ループまたはタイマーを挿入する必要があると思います。

于 2015-09-02T22:35:42.140 に答える