Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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 sharp windows应用程序中单击时更改按钮背景色_C#_Xaml - Fatal编程技术网

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;
}