Forum: PC-Programmierung Windows 8; Touch Display Kontext Menü unterdrücken?


von Be B. (bebo)


Lesenswert?

Hallo,

ich habe ein kleines Programm geschrieben, daß wo etwas wie ein 
Transportfeld vom Kassettenrekorder enthält.

Es gibt Transport Buttons für Forlauf und Rücklauf. Was ich möchte ist, 
daß man, solange der Button gerückt ist eine Aktion ausgeführt wird.

Mit der Mauß funktionniert das auch alles super, nur wenn ich die 
Anwendung auf meinem Tablet laufen lasse und die Tasten über das 
Touch-Display bedienen will habe ich das Problem, daß bei längerem 
Halten Windows 8 das Kontextmenü anzeigen will.

Gibt es eine Möglichkeit zu verhindern, daß Windows 8 bei Touchbedienung 
das Kontextmenü anzeigt. Ideal wäre es natürlich, daß man das abhängig 
vom Ort (also z.B. vom Button) machen kann, den man Berührt.

Es es ein ganz normales Windows Desktop Programm, also keine Metro 
Anwendung.

von jz (Gast)


Lesenswert?

Vielleicht einfach kein Kontextmenu auf den Button legen? Dann kann auch 
keins geöffnet werden.

von Be B. (bebo)


Lesenswert?

Es ist kein Kontextmenü vorhanden. Aber nach kurzem Halten geht halt ein 
leeres Kästchen auf und der "Mouse"-Klick wird beendet, obwohl ich den 
Finger nicht vom Display genommen habe.

Ich hatte gehoft, daß es so etwas wie einen Parameter gibt, mit dem man 
das Verhalten temporär deaktivieren könnte. Habe aber bisher im Internet 
nichts gefunden. Über die Registry sollte es wohl eine Möglichkeit 
geben, nur wird dadurch das Tablet nutzloß, wenn man den virtuellen 
Right-Click global deaktiviert. Es muß schon nur für die laufende 
Anwendung sein.

von Dings (Gast)


Lesenswert?

Systemsteuerung -> Stift- und Fingereingabe -> Andere -> "Gedrückt 
halten" -> Einstellungen ... -> "Gedrückthalten für Rechtsklick" 
deaktivieren (oder Geschwindigkeit/Dauer ändern, es gibt dort ein 
Testfeld).
Hilft natürlich nicht, wenn die Anwendung auf einem anderen Rechner 
verwendet wird. Bei .NET/WPF würde ich versuchen, 
OnPreviewMouseRightButtonDown zu implementieren und Handled zu setzen. 
Es gibt auch 'Stylus.IsPressAndHoldEnabled="True"', aber das habe ich 
bisher noch nicht getestet.

von Dings (Gast)


Lesenswert?

Und ja, globales Deaktivieren ist ohnehin keine gute Idee ...

von Dings (Gast)


Lesenswert?

'Stylus.IsPressAndHoldEnabled="False"' natürlich. Sorry wegen des 
Spammens, aber was man nicht im Kopf hat, muss man eben in den Fingern 
haben.

von Be B. (bebo)


Lesenswert?

OnPreviewMouseRightButtonDown habe ich mal auf handled gesetzt. Hat aber 
nicht funktionniert.

Übrigens: Das globale ausschalten ist zwar möglich, aber auch danach ist 
kein langer Mausklick möglich.

von Arc N. (arc)


Lesenswert?

IsRightTapEnabled und IsHoldingEnabled hätte der Button auch noch 
anzubieten...

von ... (Gast)


Lesenswert?

@ Be Bo

Bevor du an irgendwelchen Nippeln und Buttons herumspielst:

Lad Dir mal ne Tuete Deutsch runter.

von Dings (Gast)


Lesenswert?

Arc Net schrieb:
> IsRightTapEnabled und IsHoldingEnabled hätte der Button auch noch
> anzubieten...

Be Bo schrieb:
> Es es ein ganz normales Windows Desktop Programm, also keine Metro
> Anwendung.

von Be B. (bebo)


Lesenswert?

Ich habe jetzt eine Lösung gefunden.
Etwas umständlich, aber funktioniert.

Hier zwei Links, die für die interessant sein dürfen, die mit dem 
gleichen Problem kämpfen.

Dieser User hat einen TouchButton von Butten abgeleitet und um 
TouchDown, TouchMove und TouchUp Events erweitert.
http://www.mycsharp.de/wbb2/thread.php?threadid=101383&threadview=1&hilight=&hilightuser=0&sid=0057a953ce77add077675c2f0367b4ca

Und hier steht, sie man das visuelle Feedback für einzelne Buttons 
deaktiviert.
http://msdn.microsoft.com/en-us/library/ms812373.aspx

Alles etwas umständlich, aber nun ja. Wenn man es einmal hat, dann ist 
es wieder einfach.

Danke für Eure Tips.

Schönen Sonntag noch

von die regel (Gast)


Lesenswert?

WPF => RepeatButton

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.