DataGridView übernimmt immer wieder Schriftart von GroupBox

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von DanCooper.

    DataGridView übernimmt immer wieder Schriftart von GroupBox

    Hallo miteinander

    ich habe folgendes Problem:
    Innerhalb einer GroupBox ein DataGridView und ein Label. Ich möchte, dass der Text (Titel) der GroupBox Bold ist, das Label und der komplette DataGridView nicht.
    Ich setze nun das Label und ColumnHeadersDefaultCellStyle, DefaultCellStyle und RowHeadersDefaultCellStyle im Forms-Designer auf Bold = False. Das ganze wird dann wie gewünscht im Designer angezeigt.

    Starte ich die Anwendung nun passt alles. Wenn ich die Form in VS schliesse und neu öffne ist jedoch alles im DataGridView wieder Bold bzw. zurückgesetzt auf die Default-Werte (Properties sind nicht mehr fett markiert im Eigenschaften Fenster). Wenn ich jetzt ohne Änderungen die Anwendung starte wird der DataGridView aber immer noch richtig angezeigt, also NICHT Bold. Wenn ich jedoch ein Control verschiebe und dadurch die Form1.Designer.vb neu geschrieben wird, wird in der Anwendung wieder das komplette DataGridView Bold dargestellt. Das Label hingegen verhält sich korrekt und behaltet nach der ersten Anpassung die Formatierung bei.

    Übersehe ich da etwas oder ist das ein Bug in VS / VB.NET?
    Genau das mache ich doch(?).

    Die Font wird aber beim Öffnen der Form im Designer immer wieder auf die Default-Werte zurückgesetzt und ist somit wieder die, die ich bei der GroupBox definiert habe.

    Das lässt sich bei mir beliebig reproduzieren:
    • GroupBox erstellen und DataGridView darin platzieren
    • GroupBox auf fett einstellen
    • eine Spalte im DataGridView einfügen und Font definieren
    • Starten => passt
    • Form schliessen und wieder öffnen => Font ist wieder zurückgesetzt, wird jedoch beim Start noch richtig angezeigt
    • DataGridView um einen Pixel verschieben (.Desiger.vb wird neu geschrieben) => Starten => alles wird wieder fett angezeigt

    Ja, ich rede vom Designer, also dort wo man die Control frei verschieben und über Einstellungen (F4) definieren kann.
    Kann doch nicht sein dass ich das manuell über Code festlegen muss... ausser er wäre ein Bug in VS oder ich kapire etwas nicht.

    DanCooper schrieb:

    GroupBox
    -Properties werden per default auf ihre Controls durchgereicht, sobald der Designer aktiviert wird.
    Alle speziellen Änderungen solltest Du im Konstruktor nach InitializeComponents() im Code setzen.
    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!
    @RodFromGermany Ok, das ist klar. Ich frage mich aber, wieso ich z.B. bei einem Label, CheckBox usw. die Property einmal ändern kann und diese dann so bleibt, bei DataGridView jedoch nicht (ist auch das einzige Control das mir bis jetzt so aufgefallen ist)? Theoretisch wird die Anpassung ja im .Designer.vb gespeichert und sollte dann die Defaults überschrieben. Das funktioniert auch beim ersten Mal anpassen, aber nur so lange wie ich die Form nicht wieder im Designer lade/öffne. Irgendwie erscheint mir das wie ein Bug ...

    Aber wenn ihr das selbe Problem habt dann werde ich es mit Code lösen müssen.

    @Drahuverar War das jetzt ironisch gemeint oder ernsthaft?
    Mein Problem lässt sich ja in wenigen Schritten nachvollziehen.

    Vollzitate entfernt. ~Trade

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    Also GroupBox in Kombination mit RadioButtons, CheckBoxen und so ähnlichen Controls. Da hab ich schon ab und zu mal ein Phänomen.
    (Fängt ja schon damit an das Control außerhalb der GroupBox zu platzieren und dann mit den Pfeiltasten auf die GroupBox zu verschieben...)

    Aber in der Konstellation hab ich's noch nich' gehabt.
    Option Strict On!

    DanCooper schrieb:

    Irgendwie erscheint mir das wie ein Bug ...
    Jou, DGV und Label verhalten sich in einer GroupBox unterschiedlich.
    Ein in einer GroupBox im Designer angefasstes Label wird nicht kollektiv mit der GroupBox bezüglich Bold umgestellt.
    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!
    Vollzitat entfernt. ~Trade
    Doch, wird es, aber nur so lange ich das Label nicht manuell anpasse. Und genau das selbe mache ich ja mit dem DGV. Wie gesagt, es funktioniert auch mit dem DGV wenn ich es anpasse und dann die Form speichere/schliesse. Man sieht dann auch im .Designer.vb, dass die Properties angepasst wurden. Erst wenn ich die Form wieder im Designer öffne werden die Properties wieder zurückgesetzt. So lange ich aber nichts an der Form ändere und VS kein Grund hat, die .Designer.vb neu zu schreiben, d.h keine Änderung erkannt wurde, bleiben die manuellen Einstellungen erhalten.

    Das kann doch kein System sondern nur ein Bug sein?!?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    DanCooper schrieb:

    aber nur so lange ich das Label nicht manuell anpasse

    RodFromGermany schrieb:

    Ein in einer GroupBox im Designer angefasstes Label
    Sag ich doch. :D
    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!

    ErfinderDesRades schrieb:

    Setze doch einfach den Font des DGVs auf einen Font deiner Wahl.

    DanCooper schrieb:

    Genau das mache ich doch

    Nein, Du sollst die Font-Eigenschaft von von DataGridView ändern, nicht von CellStyle.

    EDIT:
    mit dem Code im Load-Event:

    VB.NET-Quellcode

    1. For Each ctrl As Control In Me.GroupBox1.Controls
    2. ctrl.Font = New Font(ctrl.Font, FontStyle.Regular)
    3. ctrl.Text = ctrl.Name
    4. Next

    sieht es so aus:
    Vollzitate entfernt. ~Trade
    @RodFromGermany Sorry, habs überlesen :rolleyes:

    @ErfinderDesRades Nein, Du sollst die Font-Eigenschaft von von DataGridView ändern, nicht von CellStyle.

    EDIT:
    mit dem Code im Load-Event:

    VB.NET-Quellcode

    1. For Each ctrl As Control In Me.GroupBox1.Controls
    2. ctrl.Font = New Font(ctrl.Font, FontStyle.Regular)
    3. ctrl.Text = ctrl.Name
    4. Next

    sieht es so aus:
    vb-paradise.de/index.php/Attac…36803f01e4517af44ad946fc5[/quote]
    Danke, werde ich dann wohl so lösen müssen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()