2009-07-23 7 views
0

Meine App wird als Plugin in einer anderen gefensterten App ausgeführt. Daher hat mein Fenster oft nicht den Fokus. Wenn nun jemand die Maus über eine Schaltfläche/ein Menü bewegt und einmal klickt, wird nur der Fokus auf mein Fenster gesetzt. Dann muss er erneut klicken, um die eigentliche Schaltflächenfunktionalität zu erhalten.So wiederholen Sie einen Mausklick in .NET

Dies ist ein kleiner Ärger, aber ich möchte es loswerden. Zuerst habe ich versucht, den Fokus zu beanspruchen, wenn die Maus in meinen Dialograum eintritt, aber das erwies sich als noch ärgerlicher. Also, was ich tun möchte, ist den Mausklick zu wiederholen, so dass es aussieht, als ob ein einzelner Klick sowohl den Fokus geändert UND die Taste gedrückt hat.

Offensichtlich sollte ich dies nur tun, wenn der Klick in einen SetFocus resultierte, sonst wird die Tastenfunktion zweimal ausgeführt.

Irgendwelche Vorschläge?

tief und ewig verschuldet, David

Antwort

1

Mausklick Simulation scheint hier ein wenig chaotisch, aber Sie können jeden Mausklick jeder (X, Y) über die SendInput API durch P/Invoke immer simulieren:

[DllImport("user32.dll", SetLastError=true)] 
static extern uint SendInput(uint nInputs, INPUT [] pInputs, int cbSize); 

Sie können auch hantieren mit ausbreitende/WM_MOUSEXXXXX Nachrichten direkt generieren, aber ich habe damit viel gespielt und glaube mir, wenn ich sage, es ist ein totaler Klud.

+0

Danke, ich werde mit diesen experimentieren. –

1

Ich würde vorschlagen, dass Sie das Verhalten halten wie; Dies ist das Standardverhalten des Betriebssystems, und seine Änderung könnte die Standard-Usability-Richtlinien sprengen.

+0

Punkt genommen, ich mag es auch nicht von UI Konventionen abzuweichen, aber das konventionelle Verhalten * ist * nervig. –