/// <summary> /// ライブラリModuleの選択状態の変更。 /// [ダブルクリック]または[右クリック]-[選択]から呼び出し。 /// </summary> private void ChangeTargetLibraryModuleSelectedStatus() { if (this.targetFileModuleListView1.SelectedItems.Count != 1) { return; } TargetLibraryPair pair = this.targetLibraryModuleListView1.Tag as TargetLibraryPair; if (pair == null) { //念のため確認。targetFileModuleListViewItem1にItemが存在するので、Tagがnullになることは無い。 return; } TargetLibraryModuleListViewItem item = this.targetLibraryModuleListView1.SelectedItems[0] as TargetLibraryModuleListViewItem; //選択状態の更新 pair.PairFileList.ForEach(x => { //選択されていたものをtrue。それ以外をfalse。 x.Selected = (x == item.TargetFile); }); //選択状態に従って色の変更 this.targetLibraryModuleListView1.Items.Cast <TargetLibraryModuleListViewItem>().ToList().ForEach(x => { x.BackColor = x.TargetFile.Selected ? Color.Orange : Color.White; }); //選択状態を変更したので、競合の再確認 this.CheckPairingStatus(); }
/// <summary> /// 対象ファイルのModuleが変わったら、表示するライブラリのModuleも変更する /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void targetFileModuleListView1_SelectedIndexChanged(object sender, EventArgs e) { if (this.targetFileModuleListView1.SelectedItems.Count != 1) { return; } //選択されたアイテムから、TargetLibraryPairを取得 //取得したPairはTagに保管しておく TargetFileModuleListViewItem item1 = this.targetFileModuleListView1.SelectedItems[0] as TargetFileModuleListViewItem; TargetLibraryPair pair = this.m_TargetLibraryPairs.FirstOrDefault(x => x.BaseFile == item1.TargetFile); this.targetLibraryModuleListView1.Tag = pair; try { this.targetLibraryModuleListView1.BeginUpdate(); this.targetLibraryModuleListView1.Items.Clear(); //PairのLibraryファイルをすべて表示 this.targetLibraryModuleListView1.Items.AddRange(pair.PairFileList.Select <SelectableLibraryFile, TargetLibraryModuleListViewItem>(x => { TargetLibraryModuleListViewItem item = new TargetLibraryModuleListViewItem(x); if (x.Selected) { item.BackColor = Color.Orange; } return(item); }).ToArray()); } finally { this.targetLibraryModuleListView1.EndUpdate(); } }