Ich habe eine Windows Forms-Anwendung mit einigen Tasten für die F-Tasten. Wenn Sie die Maus über die Schaltflächen bewegen, wird die Farbe grau, und wenn Sie klicken, erhalten Sie ein leicht helles Grau. Ich möchte dieses Verhalten mit F-Tastenanschlägen nachahmen ... wie würdest du es tun?Simulieren flache Maustaste MouseDown und MouseOver
Antwort
Schließlich implementiert ich die Taste, um den Hintergrund zu ändern:
class FunctionButton : Button
{
private Color m_colorOver;
private bool m_isPressed;
public FunctionButton() : base()
{
m_isPressed = false;
}
protected override void OnGotFocus(EventArgs e)
{
OnMouseEnter(null);
base.OnGotFocus(e);
}
protected override void OnLostFocus(EventArgs e)
{
if (!m_isPressed)
{
OnMouseLeave(null);
}
base.OnLostFocus(e);
}
protected override void OnMouseLeave(EventArgs e)
{
if (!Focused && !m_isPressed)
{
base.OnMouseLeave(e);
}
}
public void FunctionKeyPressed()
{
// Handle just the first event
if (!m_isPressed)
{
m_isPressed = true;
m_colorOver = FlatAppearance.MouseOverBackColor;
FlatAppearance.MouseOverBackColor = FlatAppearance.MouseDownBackColor;
OnMouseEnter(null);
PerformClick();
}
}
public void FunctionKeyReleased()
{
m_isPressed = false;
FlatAppearance.MouseOverBackColor = m_colorOver;
if (Focused)
{
OnMouseEnter(null);
}
else
{
base.OnMouseLeave(null);
}
}
}
Es ist nicht die Art und Weise sauber, aber es funktioniert gut. Ich hätte gerne mehr Beispiele mit einem saubereren und eleganteren Stil.
Verwenden Sie Button.PerformClick().
, die die Funktionalität aufruft, aber der grafischen Zustand Die Schaltfläche wird nicht geändert. – yeyeyerman
der KeyPreview
Unterkunft Set Formular true
, behandeln Sie die KeyDown
und KeyUp
Ereignisse, Spur, die Funktionstaste (n) gedrückt werden, und rufen Sie die Invalidate
Methode auf die Schaltfläche für jede Taste die ging nach unten oder nach oben.
Behandeln Sie dann das Ereignis der Schaltfläche Paint
, und verwenden Sie die ButtonRenderer
class, wenn die Taste gedrückt ist, um die Schaltfläche zu zeichnen, als ob es gedrückt wurde.
Ich werde so etwas versuchen. Vielen Dank! – yeyeyerman
Ich arbeite nicht, da Flat Buttons mit ButtonRenderer nicht gerendert werden können: -o – yeyeyerman
SetCapture und ReleaseCapture könnte funktionieren.
- 1. mouseover während mousedown
- 2. Animieren Schaltfläche auf MouseOver und MouseDown
- 3. Simulieren Mouseover in Vimperator plugin
- 4. Mousedown-Ereignis auf Leinwand simulieren Fabric.js
- 5. was ist der Unterschied zwischen „MouseDown- + = new Mouseeventhandler (mouseDown-)“ und MouseDown- + = mouseDown-
- 6. argrelextrema und flache extrema
- 7. wie mouse move zu implementieren, während mouseDown gedrückt js
- 8. Detect linke Maustaste drücken
- 9. cfgrid und cfajaximport Mouseover
- 10. Angular ng-Klick, ng-mouseover Ausdruck und mouseover
- 11. Drehmoment und Drehimpuls simulieren
- 12. CSS-Hover und JavaScript-Mouseover
- 13. Jquery Mobile und mouseover Ereignis
- 14. MouseOver und MouseOut In CSS
- 15. detect mouseup außerhalb von mousedown element
- 16. Deaktivieren scrollen auf mousedown-mouse (Jquery/javascript)
- 17. Unterschied zwischen mousedown und klicken in jquery
- 18. Wie erkenne ich die rechte Maustaste, während die linke Maustaste im IE gedrückt wird?
- 19. jQuery ist MouseDown- mit der Maus darüber
- 20. Flache Kopie und tiefe Kopie in C
- 21. Wie zeichne Rechteck auf MouseDown/Move C#
- 22. Nokia Maps (v2.2): mousedown/mouseup Ausgabe
- 23. Wie erkennt man die rechte Maustaste und die andere Maustaste, während die linke Maustaste auf NSTextView gezogen wird?
- 24. WPF, Bild MouseDown Event
- 25. as3 MouseDown Timer
- 26. Linke und rechte Maustaste auf NSView erkennen
- 27. MouseUp/MouseClick nach MouseDown verhindern
- 28. mousedown-Speicher speichern
- 29. JavaScript während mousedown-
- 30. Binding mousemove in mousedown-Funktion mit jQuery
Highly mit dieser Frage im Zusammenhang http://stackoverflow.com/questions/1304714/simulating-a-click-with-the-keyboard-in-windows-forms – yeyeyerman