Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo!

Zuerst mal kurz zu mir, ich bin 17 Jahre alt und mache seit 01.09.2009 eine Ausbildung zum Fachinformatiker in Systemintegration.

Habe gerade nicht viel zu tun, und wollte nun in VS C# programmieren.

Da ich schon etwas länger an einer Anwendung programmiere, ist das hier nun nur ein Teil davon.

So nun zu meinem Problem:

Ich möchte, dass wenn man bei geöffnetem Fenster 2 Tasten eingibt, eine Meldung ausgegeben wird.

bis jetzt sieht mein code dafür so aus:

private void Form1_KeyDown(object sender, KeyEventArgs e)

        {

            if (e.KeyData == Keys.A && e.KeyData == Keys.

            {

                MessageBox.Show("Taste A und B wurden gedrückt.");

            }

        }[/code]

Nur werden die Tasten nicht erkannt. Was ist falsch daran?

[Edit] Schreibe ich nur " if (e.KeyData == Keys.A) wird die Taste erkannt und die Nachricht ausgegeben.[/Edit]

Dann habe ich noch ein Problem. Eigentlich soll nicht Taste A und B gedrückt werden, sondern eine Meldung (nicht die Beispielmeldung oben) soll bei einer Tastenkombination wie z.B. "alt+T" ausgegeben werden.

Im Internet bin ich auf das hier gestoßen:

MSDN-Microsoft

Leider kann ich damit jetzt nichts anfangen, da ich noch in den Anfängen des Programmierens stecke. Ich hoffe ihr könnt mir helfen,

Danke und Gruß,

Fedon

Bearbeitet von Fedon

Fehler: Der Operator "==" kann nicht auf Operanden vom Typ "int" und "System.Windows.Forms.Keys" angewendet werden.

Funktioniert leider nicht.:(

Nur werden die Tasten nicht erkannt. Was ist falsch daran?

[Edit] Schreibe ich nur " if (e.KeyData == Keys.A) wird die Taste erkannt und die Nachricht ausgegeben.[/Edit]

Weil e.KeyData entweder gleich Keys.A oder gleich Keys.B sein kann, jedoch niemals gleich beidem.

Der Referenz zufolge würde ich das so realisieren:

    if (e.KeyCode == Keys.Alt && e.KeyCode == Keys.T) {

        MessageBox.Show("Tasten Alt und T wurden gedrückt!");

}
Probiers mal aus und gib Bescheid =) EDIT: Wenn Bubble recht hat, probiers mit:

    if (e.KeyCode == Keys.Alt) {

        if(e.KeyCode == Keys.T) {

            MessageBox.Show("Tasten Alt und T wurden gedrückt!");

        }

    }

zmd. akzeptiert er damit "alt", aber die MessageBox wird trotzdem nicht ausgegeben..

Danke bis hierher für die Antworten, freu mich auch über weitere, bin jetzt aber bis morgen früh hier nicht mehr online

Gruß, Fedon

EDIT: Wenn Bubble recht hat, probiers mit:

Natürlich habe ich recht. Eine Variable kann zu einem Zeitpunkt immer nur einen Wert haben.

Ihr macht den Fehler, ALT wie eine Taste und nicht wie einen Modifier zu behandeln. Wenn die Form (und kein anderes Control) den Focus hat, dann kann man z.B. auf ALT+A so prüfen:


private void Form2_KeyDown(object sender, KeyEventArgs e)

{

	if (e.KeyCode == Keys.A && e.Modifiers == Keys.Alt)

	{

		System.Windows.Forms.MessageBox.Show("ALT+A (KeyDown event)");

	}

}

Ihr macht den Fehler, ALT wie eine Taste und nicht wie einen Modifier zu behandeln.

Da Alt eine Sondertaste ist: KeyEventArgs.Alt

Ansonsten weiß ich zwar nicht, wie die Modifiers verknüpft werden können, aber ich würde Alt als binär-or abfragen, da sonst das problem auftritt, wenn ctrl und alt zusammen genutzt werden.

Da Alt eine Sondertaste ist: KeyEventArgs.Alt

Dieses Property kann man auch auswerten, allerdings würde, wenn man nur dieses eine Property (in dem Beispiel oben e.Alt) auf wahr prüft, auch eine Kombination von z.B. CTRL+ALT+A die if-Bedingung erfüllen. Um das zu verhindern, müsste man noch weitere Properties wie Control und Shift auswerten. In meinem Beispiel hingegen würde nur auf ALT+A reagiert werden.

Ansonsten weiß ich zwar nicht, wie die Modifiers verknüpft werden können, aber ich würde Alt als binär-or abfragen, da sonst das problem auftritt, wenn ctrl und alt zusammen genutzt werden.

Was ist mit diesem Satz gemeint?

if ((browser == "1") || (browser == "2") ))

{

Response.Redirect("wap");

}

Was ist mit diesem Satz gemeint?

KeyEventArgs.Modifiers Property

Gets the modifier flags for a KeyDown or KeyUp event. The flags indicate which combination of CTRL, SHIFT, and ALT keys was pressed.

D.h. da können mehrere Sachen drin stehen, eine einfache Überprüfung (e.Modifiers == Keys.Alt) würde dann nicht bei gedrücktem CTRL funktionieren.

Deswegen binär-OR um abzufragen, ob das Flag gesetzt ist.

D.h. da können mehrere Sachen drin stehen, eine einfache Überprüfung (e.Modifiers == Keys.Alt) würde dann nicht bei gedrücktem CTRL funktionieren.

Das ist auch das vom Fragesteller gewünschte Verhalten:

soll bei einer Tastenkombination wie z.B. "alt+T"

Er will z.B. auf ALT+T reagieren und nicht auf CTRL+ALT+T.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.