2 Pluspunkte 0 Minuspunkte
Wie kann ich bei einem Maus Event wissen ob dazu ein Button (Keys) wie z.B Keys.X geklickt wurde?
von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Um in der MyForm_MouseClick Funktion zu überprüfen, ob die Taste 'A' während des Mausklicks gedrückt wird, kannst du eine zusätzliche Variable verwenden, die den Status der Taste 'A' speichert.

using System;
using System.Windows.Forms;

class Program
{
    // Variable, um den Status der Taste 'A' zu speichern
    private static bool isKeyPressedA = false;

    static void Main()
    {
        // Ein Formular erstellen
        Form myForm = new Form();

        // Dem Formular das MouseClick-Ereignis hinzufügen
        myForm.MouseClick += MyForm_MouseClick;

        // Dem Formular das KeyDown- und KeyUp-Ereignis hinzufügen, um den Status der Taste 'A' zu aktualisieren
        myForm.KeyDown += MyForm_KeyDown;
        myForm.KeyUp += MyForm_KeyUp;

        Application.Run(myForm);
    }

    private static void MyForm_MouseClick(object sender, MouseEventArgs e)
    {
        // Überprüfen, ob die linke Maustaste und die Taste 'A' gleichzeitig gedrückt ist
        if (e.Button == MouseButtons.Left && isKeyPressedA)
            Console.WriteLine("Linke Maustaste und A wurden gleichzeitig geklickt!");
        
        else
            Console.WriteLine("Maustaste geklickt!");
    }

    private static void MyForm_KeyDown(object sender, KeyEventArgs e)
    {
        // Status der Taste 'A' beim Drücken
        if (e.KeyCode == Keys.A)
        {
            isKeyPressedA = true;
        }
    }

    private static void MyForm_KeyUp(object sender, KeyEventArgs e)
    {
        // Status der Taste 'A' beim Loslassen
        if (e.KeyCode == Keys.A)
        {
            isKeyPressedA = false;
        }
    }
}
von (706 Punkte)  
0 Pluspunkte 0 Minuspunkte

Du kannst den Namespace

using System.Runtime.InteropServices;

einbinden und die externe Funktion

[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(Keys vKey);

benutzen. Dann kannst du im Mouse Event prüfen ob eine Taste gedrückt wird.

if ((GetAsyncKeyState(Keys.W) & 0x8000) != 0)
{
    // ..
}

von (716 Punkte)