好的,用户从子窗口的组合框中选择一些东西,按下按钮,在主窗口中画布上填充了一种颜色。这就是重点,但如果用户也按下“X”也会发生同样的事情。我希望计算机能够看到“X”和我为此目的创建的按钮之间的区别。
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弄错。它都不起作用。
答案 0 :(得分:1)
在按钮点击事件处理程序中关闭它之前,尝试设置调查问卷窗口的DialogResult属性:
public class Fragment_treasures extends Fragment implements OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_treasures, container, false);
Button b = (Button) v.findViewById(R.id.StartButton);
b.setOnClickListener(this);
return v;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.StartButton:
...
break;
}
}
}
然后,您可以检查从DialogResult方法返回的值,以确定是否单击了该按钮:
private void CloseButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}