private void SetHighlightState(bool highlighted) { if (playback.Track >= charts.Count) { return; } var backColor = highlighted ? Color.FromArgb(0, 48, 120) : MusicList.BackColor; var foreColor = highlighted ? Color.White : Color.Black; MusicList.Invoke(new Action(() => { foreach (ListViewItem item in MusicList.Items) { if (item.Index != playback.Track) { item.BackColor = MusicList.BackColor; item.ForeColor = Color.Black; } } MusicList.Items[playback.Track].BackColor = backColor; MusicList.Items[playback.Track].ForeColor = foreColor; })); }
async private void OnRenderComplete(object sender, EventArgs e) { await renderTask; if (charts.Count == 0) { GroupPlayback.Invoke(new Action(() => GroupPlayback.Enabled = false)); return; } int repeat = (int)RepeatBox.Invoke(new Func <int>(() => RepeatBox.SelectedIndex)); int difficulty = (int)DifficultyBox.Invoke(new Func <int>(() => DifficultyBox.SelectedIndex)); if (repeat != 1) { SetHighlightState(false); if ((bool)ShuffleBox.Invoke(new Func <bool>(() => ShuffleBox.Checked))) { var randomizer = new Random(); playback.Track = randomizer.Next(charts.Count); } else if (repeat == 2 && playback.Track >= charts.Count) { playback.Track = 0; } else if (playback.Track < charts.Count - 1) { playback.Track++; } else { playback.Track = 0; return; } } MusicList.Invoke(new Action(() => MusicList.FocusedItem = MusicList.Items[playback.Track])); BtnPlay.Invoke(new Action(() => BtnPlay.PerformClick())); }