满足特定条件时,连续禁用特定按钮

时间:2020-04-23 16:23:49

标签: c# winforms

我正在尝试在满足特定条件时禁用按钮。我有3行按钮,例如,当我单击A行中的按钮时,所有其他行的按钮都会被禁用。我已经设法做到了。我唯一仍然遇到的问题是,我试图仅启用单击按钮旁边的按钮。这是我当前尝试执行的代码,禁用A行中不满足if语句(ch [1]!= x && ch [1]!= y && ch [ 1]!= ch [1]),可惜的是它什么也没做。我所有的按钮都被命名为A1等,因此第一个字符是该行的名称,第二个字符是按钮号。建议如何解决此问题?

编辑:我包括了所有代码,以使其更易于理解,但是我正在谈论的代码部分是:

  if (ch[0] == 'A')
            {
                Disable_Row(row_B);
                Disable_Row(row_C);

                foreach (Button button in row_A)
                {
                    if (ch[1] != x && ch[1] != y && ch[1] != ch[1])
                    {
                        button.Enabled = false;
                    }

                    else
                    {
                        button.Enabled = true;
                    }
                }

这是所有代码:


private void Button_click(object sender, EventArgs e)
    {

        Button b = (Button)sender;

        var ch = b.Name.ToCharArray();

        int x = ch[1]++;
        int y = --ch[1];

        if(b.BackColor == Color.Green)
        {


            if (ch[0] == 'A')
            {
                Enable_Row(row_B);
                Enable_Row(row_C);
            }

            if (ch[0] == 'B')
            {
                Enable_Row(row_A);
                Enable_Row(row_C);

            }

            if (ch[0] == 'C')
            {
                Enable_Row(row_A);
                Enable_Row(row_B);
            }

            b.BackColor = Color.White;
        }

        else
        {

            if (ch[0] == 'A')
            {
                Disable_Row(row_B);
                Disable_Row(row_C);

                foreach (Button button in row_A)
                {
                    if (ch[1] != x && ch[1] != y && ch[1] != ch[1])
                    {
                        button.Enabled = false;
                    }

                    else
                    {
                        button.Enabled = true;
                    }
                }
            }

            if (ch[0] == 'B')
            {
                Disable_Row(row_A);
                Disable_Row(row_C);

            }

            if (ch[0] == 'C')
            {
                Disable_Row(row_A);
                Disable_Row(row_B);
            }

            b.BackColor = Color.Green;
        }

    }

0 个答案:

没有答案