C# 在c sharp windows应用程序中单击时更改按钮背景色
我需要自行更改按钮背景色,这意味着当我单击按钮时,它应该更改背景色,但当我再次单击同一按钮时,我需要返回默认按钮颜色 我已尝试过此事件方法C# 在c sharp windows应用程序中单击时更改按钮背景色,c#,xaml,C#,Xaml,我需要自行更改按钮背景色,这意味着当我单击按钮时,它应该更改背景色,但当我再次单击同一按钮时,我需要返回默认按钮颜色 我已尝试过此事件方法 private void slot_1(object sender, RoutedEventArgs e) { //SlotLogic(); slot1.Background = Brushes.Green; } private void slot_2(object sender, RoutedEventArgs e) { //Sl
private void slot_1(object sender, RoutedEventArgs e)
{
//SlotLogic();
slot1.Background = Brushes.Green;
}
private void slot_2(object sender, RoutedEventArgs e)
{
//SlotLogic();
slot2.Background = Brushes.Green;
}
1-您指定了Windows应用程序。那有点宽泛。我相信你是指Windows窗体 2-您也没有检查按钮的当前状态,因此我不确定您如何认为两次单击同一按钮会产生不同的结果,因为您正在执行完全相同的come tweep
slot1.Background=brush.Green代码>
Windows窗体
如果想要切换逻辑,则需要检查当前状态以将其反转。有很多方法可以做到这一点,为了简单起见,我选择将其存储在一个单独的变量isSlot\u 1Clicked
中
您还可以检查插槽的按钮背景色,或检查复杂对象的属性或数组,等等
第一行代码只是检查变量的当前状态,并相应地更改按钮的背景。最后一行只是将变量isSlot_1Clicked设置为它的倒数,执行切换逻辑的本质
WPF版本
此版本存储默认按钮的背景,并对照当前背景检查以执行切换逻辑。发生了什么以及您希望发生什么?问题已解决,谢谢@很高兴我能帮上忙!欢迎来到社区
private bool isSlot_1Clicked = false;
private void slot_Click(object sender, EventArgs e)
{
if (isSlot_1Clicked)
slot.BackColor = Color.Green;
else
slot.BackColor = Color.Red;
isSlot_1Clicked = !isSlot_1Clicked;
}
private Brush slot_1DefaultBackground = null;
private void Slot1_Click(object sender, RoutedEventArgs e)
{
// store the default background value
if (slot_1DefaultBackground == null)
slot_1DefaultBackground = slot1.Background;
// check the current background, and toggle accordingly
if (slot1.Background != slot_1DefaultBackground)
slot1.Background = slot_1DefaultBackground;
else
slot1.Background = Brushes.Green;
}