| 

.NET C# Java Javascript Exception

5
Ich habe mir unterschiedliche Befehlsschaltflächen angeschaut und festgestellt, dass diese sich bei einer Mausanwahl unterschiedlich verhalten. Wird eine Schaltfläche angewählt und bleibt dann die Maustaste gedrückt und wird anschließend der Mauscursor aus dem Client-Bereich verschoben, dann wird:

  • teilweise automatisch der gedrückte in den nicht gedrückten Status geändert (dies ist auch bei den Standardschaltflächen der Fall)
  • teilweise bleibt der gedrückte Status erhalten und wird erst dann in
    den nicht gedrückten Status gewechselt, wenn die Maustaste gelöst wird (unabhängig davon, wo sich der Mauscursor gerade befindet)

    Im letztgenannten Fall wird beim Lösen entweder dann ein Click-Ereignis ausgelöst,
  • wenn sich der Mauscursor wieder über dem Clientbereich befindet oder aber
  • unabhängig von der Position des Mauscursors

    Am liebsten würde ich bei eigenen Schaltflächen den Clientbereich bei einer Anwahl einer Befehlsschaltfläche mit der Maus den Clientbereich für den Mauscursor auf den Bereich der Befehlsschaltfläche temporär einschränken (über die Clip-Eigenschaft der Cursor-Klasse). Dann habe ich aber das Problem, das beim Lösen das mitunter nicht gewünschte Click-Ereignis immer (!) ausgelöst wird. Das könnte man bspw. dadurch Lösen, wenn man einen Bereich hervorhebt, der das Click-Ereignis beim Lösen doch nicht auslöst. Das wäre dann aber wohl zu viel Aufwand. Was meint Ihr dazu?
  • 24.05.2013
    Klaus L. 353 2 6
    2 Antworten
    3
    Die zwei Fragen, die ich mir bei neu entwickelten oder anders (als Standard) implementierten Controls immer stelle, sind:

    • Erwartet der User das?
    • (wenn nicht:) Versteht der User das intuitiv?

    Beide Fragen würde ich für die von Dir vorgeschlagene Button-Lösung verneinen. Meine Antworten darauf sind Folgende:

    • Den Mauscursor innerhalb eines Buttons gefangen zu nehmen, ist unbekanntes Verhalten. Als User frage ich mich, wie ich ein bereits getätigtes MouseDown doch noch verhindern kann. Ich erwarte, bei gedrückter Maustaste, den Buttonbereich verlassen zu können, damit ich nicht auf dem Button die Maustaste loslasse und damit die Aktion initiiere. Dass beim Verlassen des Buttonbereichs der Button wieder in den "nicht-gedrückten" Zustand wechselt, belegt meine Erwartung durch visuelles Feedback.
    • Auch wenn Du einen separaten Bereich innerhalb des Buttons erfindest, der die Cancel-Semantik abbildet, wirst Du 99% der User mindestens die ersten dreimal damit verwirren. Sie werden es lernen, aber nicht intuitiv verstehen. Und wenn Dein Button eine Cruise Missile abfeuert...

    Auf der anderen Seite muss man sich auch einfach mal trauen, innovative UI Ideen umzusetzen. Heutzutage den Button "neu zu erfinden", halte ich zwar für gewagt, aber nicht für unmöglich. Damit kannst Du wahrscheinlich sogar berühmt werden :-)
    24.05.2013
    ffordermaier 8,4k 3 9
    3
    Prinzipiell spricht nichts dagegen, neue Steuerelemente zu entwickeln, die sich im Aussehen und Verhalten von den bekannten Steuerelementen unterscheiden. Bei Schaltflächen, die die Standardfunktionen der herkömmlichen auch optisch Schaltflächen nachbilden, sollte man sich zumindest auch im Verhalten an die Standardschaltflächen orientieren.
    Deine Schaltfläche wäre aber im Aussehen und Verhalten ein neuer Schaltflächentyp. Du kannst also sehr wohl den Mauscursor temporär einfangen und die Deaktivierung dann durch einen - z.B. farblich - hervorgehobenen Bereich vornehmen.
    Als Beispiel für eine bereits eingeführte Sonderschaltfläche kann die Schaltfläche mit Aufklappfunktion dienen, die ebenfalls funktional zweigeteilt ist und einen direkten Anwahlbereich sowie einen Bereich zum Ausklappen eines untergeordneten Menüs bietet.
    27.05.2013
    Claus M. 2,9k 9

    Stelle deine .net-Frage jetzt!
    TOP TECHNOLOGIES CONSULTING GmbH