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