2017-01-08 35 views
0

麻煩好了,用戶從子窗口的組合框中選擇一些東西,按下按鈕並在主窗口畫布中填充一種顏色。這是重點,但如果用戶也按下「X」,則會發生同樣的情況。我想讓計算機看到「X」和我爲此創建的按鈕的區別。與combobox selectedIndex

Questionnaire q = new Questionnaire(); 
     q.ShowDialog(); 


     var color = q.comboBox1.SelectedIndex; 
     switch (color) 
     { 
      case 0: 
       Canvas.Background = new SolidColorBrush(Color.FromArgb(255, 0, 128, 0)); 
       break; 
      case 1: 
       Canvas.Background = new SolidColorBrush(Color.FromArgb(255, 128, 128, 128)); 
       break; 
      case 2: 
       Canvas.Background = new SolidColorBrush(Color.FromArgb(255, 211, 211, 211)); 
       break; 
      case 3: 
       Canvas.Background = new SolidColorBrush(Color.FromArgb(255, 255, 127, 80)); 
       break; 
      case 4: 
       Canvas.Background = new SolidColorBrush(Color.FromArgb(255, 128, 128, 0)); 
       break; 
      case 5: 
       Canvas.Background = new SolidColorBrush(Color.FromArgb(255, 255, 222, 173)); 
       break; 

這段代碼是寫在MainWindowButton_ClickEvent中,它打開了子窗口。此外,我已經嘗試使用Window_Closed和Window_Closing通過將SelectedIndex設置爲-1來解決問題,但它所做的總是返回-1,而不管按下按鈕是否填充畫布。我也嘗試過使用DialogResult爲false。它沒有工作。

回答

1

嘗試,你在按鈕單擊事件處理程序關閉之前設置調查問卷窗口的DialogResult屬性:

private void CloseButton_Click(object sender, RoutedEventArgs e) 
{ 
    DialogResult = true; 
    Close(); 
} 

然後,您可以檢查從DialogResult的方法的返回值,以確定是否按鈕被點擊:

Questionnaire q = new Questionnaire(); 
bool? result = q.ShowDialog(); 

if(result.HasValue && result.Value) 
{ 
    //button was clicked 
    var color = q.comboBox1.SelectedIndex; 
    switch (color) 
    ... 
} 
+0

但問題是關閉按鈕不是我自己定製的,它是標題中的每個wpf窗口都有的X按鈕。如果只有我可以訪問它 – AlexDev

+0

我在主窗口按鈕中實現了這一點,所以它的工作原理!謝謝 – AlexDev

+0

我指的是另一個按鈕的點擊事件,即不是「X」按鈕。 – mm8

相關問題