2017-01-08 2 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

но проблема в том, что кнопка Закрыть не выполнена мной, это кнопка X в заголовке, которую имеет каждое окно wpf. Если бы я мог получить к нему доступ – AlexDev

+0

, я реализовал это в главной кнопке окна так, как это работает! Спасибо – AlexDev

+0

Я имел в виду событие щелчка другой кнопки, то есть не кнопку «X». – mm8

Смежные вопросы