void HandleCloseTab(object sender, TdiTabCloseEventArgs e) { if (CheckClosingSlaveTabs((ITdiTab)sender)) { return; } ITDICloseControlTab cct = sender as ITDICloseControlTab; if (cct != null && !cct.CanClose()) { return; } if (!e.AskSave || SaveIfNeed((ITdiTab)sender)) { CloseTab((ITdiTab)sender); } }
public bool AskToCloseTab(ITdiTab tab, CloseSource source = CloseSource.External) { var slider = tab.TabParent as TdiSliderTab; if (slider != null) { return(slider.AskToCloseTab(tab, source)); } if (CheckClosingSlaveTabs(tab)) { return(false); } ITDICloseControlTab cct = tab as ITDICloseControlTab; ITDICloseControlTab canCloseActiveDialog = (tab as TdiSliderTab)?.ActiveDialog as ITDICloseControlTab; if ((cct != null && !cct.CanClose()) || (canCloseActiveDialog != null && !canCloseActiveDialog.CanClose())) { return(false); } bool canClose = true; try { canClose = SaveIfNeed(tab); } catch (Exception e) { logger.Error(e, "Возникла ошибка при проверке закрытия вкладки"); } if (canClose) { ForceCloseTab(tab, source); return(true); } return(false); }
void OnCloseButtonClicked(object sender, EventArgs e) { Widget boxWidget = (sender as Widget).Parent; TabVBox tab = null; foreach (Widget wid in this.Children) { if (this.GetTabLabel(wid) == boxWidget) { tab = (TabVBox)wid; } } if (tab == null) { logger.Warn("Не найден вкладка соответствующая кнопке закрыть."); return; } if (CheckClosingSlaveTabs(tab.Tab)) { return; } ITDICloseControlTab cct = tab.Tab as ITDICloseControlTab; if (cct != null && !cct.CanClose()) { return; } if (SaveIfNeed(tab.Tab)) { CloseTab(tab.Tab); } }