Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改按钮';来自另一个类的属性?_C#_Visual Studio - Fatal编程技术网

C# 如何更改按钮';来自另一个类的属性?

C# 如何更改按钮';来自另一个类的属性?,c#,visual-studio,C#,Visual Studio,我有四个按钮,每个按钮可以有三种可能的颜色(背景色):黄、绿、蓝 我在另一个类中有一个方法,我想从中更改这些按钮的颜色。此方法将在按钮上的MouseUp事件中调用,专为右键单击而设计 以下是按钮的ActionListener: private void RightSeat_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) {

我有四个按钮,每个按钮可以有三种可能的颜色(背景色):黄、绿、蓝

我在另一个类中有一个方法,我想从中更改这些按钮的颜色。此方法将在按钮上的MouseUp事件中调用,专为右键单击而设计

以下是按钮的ActionListener:

private void RightSeat_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            TableModel.ColorChange(2);
        }
    }

    private void BottomSeat_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            TableModel.ColorChange(3);
        }
    }

    private void LeftSeat_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            TableModel.ColorChange(4);
        }
    }

    private void TopSeat_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            TableModel.ColorChange(1);
        }
    }
这是创建按钮的地方(设计器代码):

这是第二个类中的代码

public static void ColorChange(int btn)
    {
        TableView tw = new TableView();
        switch (btn)
        {
            case 1:
                tw.TopSeat.BackColor = Color.Yellow;
                break;
            case 2:
                tw.RightSeat.BackColor = Color.Yellow;
                break;
            case 3: 
                tw.BottomSeat.BackColor = Color.Yellow;
                break;
            case 4:
                tw.LeftSeat.BackColor = Color.Yellow;
                break;
            default:
                break;
        }
    }

但是,当我使用此方法时,应用程序中不会发生任何事情。不会出现任何类型的错误。如果我使用一个消息框来查看开关盒是否可以处理该参数,则代码会起作用,但颜色更改不起作用。

您也可以使用“ref”将按钮传递给该方法

然后,您可以使用以下方法调用此方法:

 private void TopSeat_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            TableModel.ColorChange(1, ref TopSeat);
        }
    }

您需要查找现有表单“TableView”


从哪里调用
ColorChange
?我很好奇,当您想要更改按钮的颜色时,为什么要创建一个新的TableView?是的,但由于它对MessageBox有效,我认为这不会是一个问题。您能否详细说明如何修复它?断点最适合您的情况,并将该方法称为ColorChange(1,this)?这会有帮助吗?我是在ColorChange方法中,还是在它的签名中,还是在其他地方尝试?你可以在任何地方尝试,在ColorChange方法中应该是好的
public static void ColorChange(int btn, ref System.Windows.Forms.Button buttonToChange)
    {
        switch (btn)
        {
            case 1:
                buttonToChange.BackColor = Color.Yellow;
                break;
            case 2:
                buttonToChange.BackColor = Color.Yellow;
                break;
            case 3: 
                buttonToChange.BackColor = Color.Yellow;
                break;
            case 4:
                buttonToChange.BackColor = Color.Yellow;
                break;
            default:
                break;
        }
    }
 private void TopSeat_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            TableModel.ColorChange(1, ref TopSeat);
        }
    }
Button btn = Application.OpenForms["TableView "].Controls["LeftSeat"] as Button;
btn.BackColor = Color.Yellow