C# Buttonfarbe ändern durch MouseEnter und Tastendruck

...komplette Frage anzeigen

1 Antwort

bool RED, GREEN, BLUE;

private void AnyButton_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.R)
        RED = true;
    else if (e.KeyCode == Keys.G)
        GREEN = true;
    else if (e.KeyCode == Keys.B)
        BLUE = true;
}

private void AnyButton_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.R)
        RED = false;
    if (e.KeyCode == Keys.G)
        GREEN = false;
    if (e.KeyCode == Keys.B)
        BLUE = false;
}

private void AnyButton_MouseEnter(object sender, EventArgs e)
{
    if (sender is Button)
    {
        Button button = (Button)sender;
        button.BackColor = ChangeColor(button.BackColor);
    }
}

public Color ChangeColor(Color color)
{
    int R = color.R;
    int G = color.G;
    int B = color.B;

    if (RED)
        R = 255 - R;

    if (GREEN)
        G = 255 - G;

    if (BLUE)
        B = 255 - B;

    return Color.FromArgb(R, G, B);
}

Die Events werden auf alle Button gelegt, bei denen du den Effekt haben möchtest. 'KeyDown' setzt je nach dem welcher Key gedrückt wurde ein bestimmten Bool auf "true" und 'KeyUp' auf "false". 'MouseEnter' wird ausgelöst wenn die Maus in den Bereich irgendeines Buttons eintritt; durch den Sender wird dann der Button ermittelt, über den sich die Maus befindet. Die ChangeColor Methode ändert die angegebene Farbe je nach dem welche Bool "true" ist. Hierbei wird der Negativ-Wert einer der Farbwerte errechnet.

("R = 255 - R" | R is 255: "R = 255 - 255 == 0" || R is 0: "R = 255 - 0 == 255")

Das setzt natürlich vorraus das die Farbe des Buttons anfang auf (255, 255, 255) oder (0, 0, 0) (Scharz oder Weiß) ist.

Hoff' ich konnt dir damit irgendwie helfen.

Was möchtest Du wissen?