Schriftgrösse im Edit-Mode von DataGridView-Controls

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

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Grüter.

    Schriftgrösse im Edit-Mode von DataGridView-Controls

    Hallo Leute

    Das Standard-DataGridView hat in meinen Augen einen grossen Makel: Wenn man den Texteintrag eines Feldes editieren will und auf diese Zelle klickt, wird die Buchstabengrösse im EditMode (weiss auf blau) viel kleiner (dies, weil das blaue Editierrechteck viel kleiner als die Zelle ist - warum eigentlich?). Will man also in einer Zelle in einem ganzen Satz ein Wort ändern und klickt darauf, ist das Wort beim Editieren dann 2 cm links des Mauscursors. Sehr unschön. Kann man die Textgrösse im Editiermodus irgendwo festlegen, ohne dass man gleich das ganze Editierrechteck nachbauen muss?

    Vielen Dank fürs Mitdenken.

    Bernhard
    Hallo Bernhard,

    ich habe zum Test eben mal ein DGV mit ein paar Zeilen manuell befüllt.
    Beim DGV selbst, habe ich nur eine einzige Property verändert, den DefaultCellStyle und dort auch nur die Schriftgröße extrem vergrößert.
    Wenn ich nun in einer Zelle editiere, verändert sich die Schriftgröße nicht!

    Was sagt uns das?
    Du hast scheinbar in den endlosen Weiten des DGV einen Style verdreht, der bei Dir den Unterschied bewirkt.
    Lade ein Testprojekt mit Deinem DGV hoch, damit wir schauen können, sonst ist es mehr ein Rätselraten.

    Grüter schrieb:

    Buchstabengrösse im EditMode
    Meinst Du so was:
    ==> DGV -> Spalten bearbeiten -> DefaultCellStyle => Font
    Bilder
    • DgvEdit.png

      14,47 kB, 300×300, 124 mal angesehen
    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!
    Hallo

    Ein Bild sagt mehr als 1000 Worte. Ich meine dies:

    Vor dem Editieren:

    Während dem Editieren:


    Dass die obere Schrift kleiner ist, merkt man erst bei ~50 Anschlägen! Hab das auch mit einem nigelnagelneuen Projekt ausprobiert mit nur einem jungfräulichen DataGridView: Same Story. Klicke ich beispielsweise auf das Wort "unten", das ich ändern möchte, ist im EditMode das Wort "im" unter dem Cursor.

    Ich hoffe, mein Problem ist jetzt klarer.

    Schöner Abend

    Bernhard
    jo, das dürfte nicht so einfach sein, die beiden Darstellungen in absolute Übereinstimmung zu kriegen.
    So lange Dateninhalte sollte man imo eh nicht im DGV selbst editieren, sondern da bietet sich vlt. ein DetailView an.

    guggemol, ob die Präsentationsformen von die vier Views auf Video dir was bringen.

    Grüter schrieb:

    Hab das auch mit einem nigelnagelneuen Projekt ausprobiert mit nur einem jungfräulichen DataGridView: Same Story.


    Komische Sache ?( .
    Ich habe das auch ausprobiert und kann es nicht nachvollziehen - siehe Screenshot (Zeile ist im Editiermodus - Cursor rechts).
    Mein Testprojekt ist als Anhang dabei.

    Dateien
    • DGVtest.zip

      (46,98 kB, 106 mal heruntergeladen, zuletzt: )
    Hallo SimpleSoft

    Das ist ja wirklich komisch ?( ;( . Dein Code funktioniert bei mir, d.h. auch Zeilen im EditMode sind gleich lang. Ich möchte auch mein analoges Programm (allerdings in VB) hier als Anhang veröffentlichen, damit du es gegengleich austesten kannst (wie gesagt, das DGV ist unangetastet, hab's nur auf die Form gezogen, erzeugt aber verschiedene Zeilenlängen) - nur, eine dämliche Frage: Wie kann man ein Attachment anhängen? Und wie ihr jeweils die Bilder hochlädt, hab ich auch noch nicht herausgefunden. Hier im Editorfenster sehe ich oben (links der Smileys) einen Button "Bild", aber da wird eine URL verlangt, und so hab ich's im Post#4 gemacht: Link auf eine meiner Homepages. Aber das ist nicht, wie's gewünscht wird.

    Gruss, Bernhard

    Grüter schrieb:

    Wie kann man ein Attachment anhängen? Und wie ihr jeweils die Bilder hochlädt, hab ich auch noch nicht herausgefunden.

    Wenn Du auf "Antworten" klickst, hast Du die Option "Erweiterte Antwort". Dort gibts dann auch die "Dateianhänge" für Bilder und Files.
    Bin gespannt auf Dein Testprojekt.

    Grüter schrieb:

    Zeilen im EditMode sind beim beiliegenden Progi bei mir verkürzt ähnlich wie schon in Post#4 ersichtlich. Und bei dir???

    Ich habe Dein Projekt gestartet und einen Screenshot gemacht - bei mir ist es nicht kürzer (Cursor wieder rechts).
    Nanu?
    Wenn ich noch etwas testen soll, sag Bescheid.



    Nachtrag:
    Ich habe nun auch Dein Programm unter Windows 8.1 pro 64 und Vista Ultimate 64 getestet - keine Verkürzung zu sehen:



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

    Wenn ich noch etwas testen soll, sag Bescheid.


    Danke vielmals, simpleSoft, jetzt weiss ich auch nicht mehr wie weiter. Bei dir sind in C# und VB Zeilen im Edit-Mode gleich lang, bei mir sind es nur die Zeilen im C#-Programm, nicht aber im VB Programm.

    Das soll mir jetzt einer mal erklären ... ?( ?( ?( .
    Hatte den Verdacht, dass dieser Effekt mit meiner DPI-Einstellung des Bildschirms zu tun hat. Habe wegen der unglaublich feinen Auflösung alles auf 125% gestellt. Aber dann müsste bei mir bei beiden Programmen das gleiche abgehen. Kann's also auch nicht sein. Vielleicht daran: Windows 7 Enterprise 64bit, Version 6.1, Build 7601, SP1. VisualStudio 2012, Version 11.0.61030.00 Update 4. .NET-Framework Version 4.5.50709.

    Jede Vermutung ist hochwillkommen...

    Grüsse

    Bernhard
    Bilder
    • 3.png

      31,99 kB, 661×318, 119 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Grüter“ ()

    Grüter schrieb:

    Habe wegen der unglaublich feinen Auflösung alles auf 125% gestellt.


    Ahhh!
    Nun kommen wir der Sache ein Stück näher.
    Das habe ich auch gleich ausprobiert.

    Resultat:
    Bei 125% ist bei meiner C# Version alles ok, bei Deinem Testprojekt ist nun eine deutliche Verkürzung zu sehen!

    Nun geh ich erst mal schlafen, vielleicht bringt der morgige Tag oder die Idee eines anderen Users die Lösung - mal gucken.
    Yep, die Lösung ist da: Die erhöhte DPI-Rate ist die eine Ursache des Effektes, dann gibt's aber noch eine zweite: Dem DataGridView MUSS eine Fontgrösse (wie im C#-Programm) zuwiesen werden, lässt man alles bei den Default-Werten (wie im VB-Programm), gibt's diesen komischen Effekt (wenn dann auch noch die DPI-Einstellung erhöht ist). Allerdings kann man dem DGV an drei (!!!) Stellen den "inneren" Zellen einen Font zuweisen:

    - DefaultCellStyle
    - RowsDefaultCellStyle
    - RowTemplate -> DefaultCellStyle

    Definiere ich an allen drei Stellen die gleiche Fontgrösse, verschwindet auch bei mir der komische Effekt, trotz 125% DPI. Dazu aber noch eine (hoffentlich letzte) Frage: Paradoxerweise kann man an allen drei Stellen den Font auf verschiedene (!) Grössen einstellen. Welche ist nun die gültige (es kann doch nicht sein, dass man den Font dreifach eintragen muss...), wie verhält sich VB, wenn sich die Werte widersprechen?

    Danke für Aufklärung

    Bernhard

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Grüter“ ()

    Da hab ich etwas zu früh gejubelt: Die Antworten auf meine Fragen habe ich zwar hier gefunden: msdn.microsoft.com/en-us/library/1yef90x0(v=vs.110).aspx, aber das DataGridView verhält sich doch widerborstiger als gedacht. Setze ich die Schriftgrösse auf 9,10, 12 oder 14, gibt's keine Verkürzung, setze ich sie auf 8 oder 11 oder 16, schon (immer bei DPI=125%). Das scheint mir jetzt doch ein kleiner Bug im Control zu sein. Unnötig zu sagen, dass ich natürlich gerade Schriftgrösse 11 haben möchte ...

    Danke für jegliche Anregungen

    Bernhard

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Grüter“ ()

    Na ja, DataGridView is imo ein MÄCHTIGES Instrument zur Visualisierung von Daten. Und viellicht auch eben deshalb nicht so trivial zu verwenden, wie z.B. eine TextBox.
    Es gibt jede Menge Schrauben, an denen man drehen kann, so auch bei der Darstellung der Werte bezüglich Schriftart (und damit auch Größe), CellFarbe, Ausrichtung etc., schlicht und ergreifend:
    Den Stil der Darstellung.
    Der wird an zentraler Stelle auf Ebene des DataGridView definiert, und zwar in DataGridView.DefaultCellStyle
    Und wie der Link zeigt, gibt es in den untergeordneten Elementen (Zellen, Zeile, Spalten etc.) jeweils die Möglichkeit, für ein bestimmtes Element andere Daufault-Stil-Einstellungen zu bestimmen.
    Und zum Schluss kann in den Events des DataGridView der verwendete Stil nochmals verändert werden ...
    Wenn man da nicht sehr genau weiss, was man tut, kommt es zu Effekten, wie beschreiben.

    Ich hab' bei mir unter Win7 prof einmal andere DPI-Einstellungen ausprobiert, konnte aber das aufgezeigt Verhalten nicht beobachten.

    Vielleicht solltest Du Dir die Vererbungskette (OOP in Reinkultur) nochmal anschauen ...
    Danke an alle, die mitgedacht haben. Für alle, die noch interessiert sind, hier mein Workaround, wie ich das Problem gelöst habe (gibt's eigentlich eine Meldestelle bei Microsoft für diesen Bug?):
    Die Schriftgrösse 11 mit der Combobox unter DefaultCellStyle auswählen. Nach einem OK erscheint in der Tabelle des CellStyle-Generators "Microsoft Sans Serif; 10,8pt". Jetzt die Schriftgrösse 10,8 manuell mit 11,1 überschreiben. Das gibt optisch genau die gleiche Schriftgrösse, aber die Verkürzung beim Editieren tritt NICHT auf :) :) :) . Ist übrigens auch bei Arial etc so.

    Damit ist für mich das Problem gelöst und ich schliesse den Thread.

    Bernhard

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Grüter“ ()