繁体   English   中英

组合框selectedIndex的麻烦

[英]trouble with combobox selectedIndex

好的,用户从子窗口的组合框中选择某项,按下按钮,然后在主窗口画布中填充一种颜色。 这就是要点,但是如果用户同时按下“ 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设置为false。 没有一个工作。

在按钮单击事件处理程序中将其关闭之前,尝试设置“问卷”窗口的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)
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM