// --- folder --- private void HandleMemoFolderChanged(object sender, MemoFolderChangedEventArgs e) { if (_facade.ActiveFolder != null && e.Cause.PropertyName == "ContainingMemos") { if (e.Cause.Kind == PropertyChangeKind.Remove) { /// ノートをクリアファイルから削除したときにタブを閉じる var openInfos = _facade.MainForm.OpenMemoInfos.ToArray(); foreach (var info in openInfos) { var memo = _facade.Container.Find <Memo>(info.MemoId); if (!e.Folder.ContainingMemos.Contains(memo)) { _facade.CloseMemo(info); } } } else if (e.Cause.Kind == PropertyChangeKind.Clear) { /// ノートをクリアファイルからクリアしたらすべてのタブを閉じる _facade.CloseAllMemos(); } else if (e.Cause.Kind == PropertyChangeKind.Add) { /// ノートをクリアファイルに追加したときにタブを開く var openInfos = _facade.MainForm.OpenMemoInfos.ToArray(); foreach (var memo in e.Folder.ContainingMemos) { var info = _facade.FindMemoInfo(memo); if (!openInfos.Contains(info)) { _facade.LoadMemo(info, false); } } } } if (e.Folder == _workspaceView.WorkspaceTree.SelectedFolder || _facade.ActiveFolder != null) { UpdateMemoListBox(true); } }