CustomizedFormBorder

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    CustomizedFormBorder

    Hallo zusammen,

    ich bin auf der Suche nach einer Möglichkeit die Form von mir zu personalisieren.

    Allerdings möchte ich gerne das Windows eigene Form beibehalten, um in den Genuss von Resize zu kommen, deswegen möchte ich es gerne ohne Panels lösen.

    Ich weiß auch, dass ich Controls selbstanlegen kann und die bestimmten Bereiche somit überschreiben kann (hier ein Beispiel für ein Menüstrip)

    C#-Quellcode

    1. class ColorTable : ProfessionalColorTable
    2. {
    3. // Seperator
    4. public override Color SeparatorDark
    5. {
    6. get { return Color.FromArgb(69, 69, 73); }
    7. }
    8. // Image section (left)
    9. public override Color ImageMarginGradientBegin
    10. {
    11. get { return Color.FromArgb(45, 45, 48); }
    12. }
    13. public override Color ImageMarginGradientEnd
    14. {
    15. get { return Color.FromArgb(45, 45, 48); }
    16. }
    17. public override Color ImageMarginGradientMiddle
    18. {
    19. get { return Color.FromArgb(45, 45, 48); }
    20. }
    21. // Dropdown
    22. public override Color ToolStripDropDownBackground
    23. {
    24. get { return Color.FromArgb(45, 45, 48); }
    25. }
    26. // Hover
    27. public override Color MenuItemSelected
    28. {
    29. get { return Color.FromArgb(69,69,73); } // Don't mind the colors...
    30. }
    31. //Border
    32. public override Color MenuItemBorder
    33. {
    34. get { return Color.FromArgb(69, 69, 73); }
    35. }
    36. // Backcolor menu items
    37. public override Color MenuItemSelectedGradientBegin
    38. {
    39. get { return Color.Transparent; }
    40. }
    41. public override Color MenuItemSelectedGradientEnd
    42. {
    43. get { return Color.Transparent; }
    44. }
    45. public override Color MenuItemPressedGradientBegin
    46. {
    47. get { return Color.Transparent; }
    48. }
    49. public override Color MenuItemPressedGradientEnd
    50. {
    51. get { return Color.Transparent; }
    52. }
    53. // Menu border
    54. public override Color MenuBorder
    55. {
    56. get { return Color.FromArgb(69, 69, 73); }
    57. }
    58. }


    Doch wie schaut es nun bei einer ganzen Form aus? Welche Events muss ich hier overriden, damit ich folgende Eigenschaften ändern kann:
    BorderColor
    ForeColor
    ButtonBackColors und Hover Colors

    Kann ich sogar einen weiteren Button in den Rahmen einbinden? Wenn ja, wie?

    Mein Ansatz ist hier:

    C#-Quellcode

    1. using System.Drawing;
    2. class CustomForm : System.Windows.Forms.Form
    3. {
    4. public CustomForm()
    5. {
    6. }
    7. }


    LG Marvin

    @MarvinKleinMusic Die alte Frage: Wie beschaffe ich mir Informationen :?:
    Gib Deine Fragestellung bei Frau Google ein, sie hilft Dir weiter:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Anbei mal ein Video. Wieso werden, obwohl die Koordinaten richtig angezeigt werden, die falschen eingespeichert?
    @MarvinKleinMusic Das sieht richtig aus.
    Kannst Du mal den Code posten?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Cursor.Position gibt auch während des Debuggens die aktuellen Mauszeigerdaten raus. Bewegt man also bei Debuggen bei nem Haltepunkt die Maus, erhält man bei Auswertung von Cursor.Position eben auch die tatsächlich jetzigen Mauswerte.

    Die in die Variablen übertragenden Cursorpositionsdaten sind die Mauszeigerkoordinaten, die zum Zeitpunkt der Codeausführung ermittelt wurden.

    Oder anders: Man erreicht einen Haltepunkt, bei dem Cursor.Position in 2 Variablen X und Y überführt wird. Diese Variablenwerte bleiben erhalten. Ist die Maus zu diesem Zeitpunkt bei 800; 600, dann werden diese Werte in die Variablen übertragen. Nun erreicht man einen Haltepunkt. Der Debugger stoppt dort den Programmablauf. Ist man theoretisch mit der Maus zu jenem Zeitpunkt oben links und würde Cursor.Position jetzt auswerten, erhielt man 1; 1. Aber in den o.g. Variablen wäre noch immer 800; 600 abgespeichert.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()