使用combobox selectedIndex的麻烦

时间:2017-01-08 19:29:43

标签: c# wpf combobox

好的,用户从子窗口的组合框中选择一些东西,按下按钮,在主窗口中画布上填充了一种颜色。这就是重点,但如果用户也按下“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弄错。它都不起作用。

1 个答案:

答案 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();
}