2011-06-03 64 views
1

嗨,我有一個標籤加載此用戶控件。當我希望關閉此選項卡時,我希望調用此cancelbutton_click事件以在關閉時彈出確認,如果確定,則關閉,如果取消,選項卡將保留。tab usercontrol closing event

如果我使用Unloaded事件,它會在關閉前彈出兩次。

private void UserControl_Unloaded(object sender, RoutedEventArgs e) 
     { 
       cancelbutton_click(sender,null); 
     } 

取消按鈕:

private void cancelButton_Click(object sender, RoutedEventArgs e) 
     { 
    MessageBoxResult objResult = MessageBox.Show("\nAre you sure you want to cancel?", "Cancel Confirmation", MessageBoxButton.OKCancel); 


      if (objResult == MessageBoxResult.OK) 
      { 
       try 
       { 
        TabItem tabItem = parentWindow.FindTabItemByName(ControlType.BusinessesContractors.ToString(), false); 
        this.parentWindow.mainTabControl.Items.Remove(tabItem); 
        this.parentWindow.statusTextBlock.Text = "Ready"; 
       } 
       catch (Exception ex) 
       { 

       } 
      } 

如何解決這個問題?謝謝

+0

這段代碼看起來相當可怕,從一個不同的窗口改變元素不是經常需要做或者根本不需要做的事情。事實上,即使不得不命名元素也不應該經常發生。 「catch」塊中是否真的沒有代碼? – 2011-06-03 08:33:52

+0

我知道這不是正確的方式,但它是一個快速修復。所以如果我想將不同的用戶控件加載到不同的選項卡中,並關閉用戶控件的選項卡,那麼執行此操作的正確方法是什麼? – Kiddo 2011-06-04 03:31:28

回答

1

Unloaded當控件已經被刪除,它不是你想經常處理的事件,只是創建一個應該關閉標籤的按鈕,處理它的點擊,檢查用戶是否想要通過取消對話並關閉標籤,如果他沒有。

+0

我已經使用用戶控件上的取消按鈕,但仍然有機會用戶可以單擊選項卡上的X來關閉它 – Kiddo 2011-06-04 03:29:48

+0

如果用戶單擊X時沒有確認,您正在做錯事關閉。 – 2011-06-04 07:27:05