private void GoBackSelectPostChain()
{
if (this.selectPostChains.Count > 1)
{
var idx = -1;
TabPage tp = null;
do
{
try
{
this.selectPostChains.Pop();
var tabPostPair = this.selectPostChains.Peek();
if (!this.ListTab.TabPages.Contains(tabPostPair.Item1)) continue; //該当タブが存在しないので無視
if (tabPostPair.Item2 != null)
{
idx = this._statuses.Tabs[tabPostPair.Item1.Text].IndexOf(tabPostPair.Item2.StatusId);
if (idx == -1) continue; //該当ポストが存在しないので無視
}
tp = tabPostPair.Item1;
this.selectPostChains.Pop();
}
catch (InvalidOperationException)
{
}
break;
}
while (this.selectPostChains.Count > 1);
if (tp == null)
{
//状態がおかしいので処理を中断
//履歴が残り1つであればクリアしておく
if (this.selectPostChains.Count == 1)
this.selectPostChains.Clear();
return;
}
DetailsListView lst = (DetailsListView)tp.Tag;
this.ListTab.SelectedTab = tp;
if (idx > -1)
{
SelectListItem(lst, idx);
lst.EnsureVisible(idx);
}
lst.Focus();
}
}