gpt4 book ai didi

c# - 如何让按钮做同样的事情?

转载 作者:可可西里 更新时间:2023-11-01 03:03:34 28 4
gpt4 key购买 nike

我刚开始编程,我想使用 WinForms 制作多个按钮,您可以单击这些按钮从白色变为浅绿色,然后再变为白色。我已经为一个按钮完成了这个:

private void button1_Click(object sender, EventArgs e)
{
if (button1.BackColor != Color.Lime)
{
button1.BackColor = Color.Lime;
}
else
{
button1.BackColor = Color.White;
}
}

现在我可以为所有按钮复制并粘贴它,但我知道这样做效率很低;如果我使用 winforms 在 button2 上引用 button1,它只会改变 button1 的颜色(很明显)。

那么,我是否需要使用辅助方法、新类或其他东西?那会是什么样子?

最佳答案

有几种方法。一种可能是创建一个不同按钮调用的通用函数:

private void button1_Click(object sender, EventArgs e)
{
ChangeColor(button1);
}

private void ChangeColor(Button button)
{
if (button.BackColor != Color.Lime)
button.BackColor = Color.Lime;
else
button.BackColor = Color.White;
}

然后每个按钮处理程序都可以使用相同的函数调用。

或者,如果所有这些按钮总是做完全相同的事情,那么您可以对所有按钮使用一个点击处理函数。在这种情况下,您需要做的是确定哪个按钮调用了处理程序(而您当前正在直接引用 button1),以便您知道要更改哪个按钮。传递给处理程序函数的 sender 对象实际上是对调用处理程序的表单元素的引用。您需要做的就是转换它:

private void button_Click(object sender, EventArgs e)
{
var button = (Button)sender;
if (button.BackColor != Color.Lime)
button.BackColor = Color.Lime;
else
button.BackColor = Color.White;
}

因此,处理程序首先获取对调用它的按钮的引用,然后在该按钮上运行逻辑。另请注意我是如何使处理程序函数的名称稍微更通用的。现在,您将转至表单设计器并将 button_Click 设置为应调用此按钮的所有按钮的点击处理程序。

关于c# - 如何让按钮做同样的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754823/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com