Statische Größe der Controls

  • Allgemein

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Samus Aran.

    Statische Größe der Controls

    Hallo liebes Forum!

    Ich habe zurzeit die Aufgabe, ein Programm zur Steuerung der einzelnen Lichtzeilen einer Lagerhalle zu schreiben.
    Das Programm steht soweit, ist auch funktionstüchtig. Programmiert wurde es auf meinem Arbeitscomputer und laufen soll es dann später auf einem 40" Touchscreen der an der Wand befestigt wird.

    Jetzt zu meinem Problem:

    Obwohl auf meinem Rechner als auch auf dem Touchscreen die Auflösung 1920x1200 Pixel eingestellt ist, füllen die Controls nurnoch ca. die Hälfte der Fläche, ausgehend von der oberen linken Ecke.
    Wie bekomme ich es nun hin, dass die einzelnen Controls in ihrer Größe statisch bleiben ?

    Ich habe für jedes Lichtfeld eine groupBox, in der sich eine progressBar, eine trackBar und ein button befinden.

    Komischerweise haben die Controls die richtige Größe wenn ich den Touchscreen direkt an meinem Pc anschliesse und das Programm aus der IDE laufen lasse, nicht aber wenn ich es kompiliere und auf dem anderen Pc laufen lasse, der mit dem touchscreen verbunden ist.

    Vielen Dank für eure Hilfe :)
    Kannst Du mal bitte einen Screenshot dazu 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!
    Es sieht einfach so aus als wäre die komplette Form inkl. der Controls mit einer Lupe verkleinert, und die Form dann in der rechten unteren Ecke vergößert worden, und somit ist in der Ecke auch mehr freier Platz.
    Ich hab das Problem mittlerweile gelöst, indem ich die Computer auf die selben DPI-Werte eingestellt habe.

    Trotzdem muss es doch eine Möglichkeit geben, dass sich die Controls auch auf andere DPI-Einstellungen anpassen, sonst müsste man ja jedem seiner Clients sagen welche dpi-Werte er zu benutzen habe ??

    MfG
    Dann solltest Du Deine Controls in ein TableLayoutPanel packen und sie dort mittig in die Zellen legen mit Anchor = Nothing.
    Das TableLayoutPanel musst Du dann im Designer auf Dock = Fill stellen.
    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!

    darksplain schrieb:

    Trotzdem muss es doch eine Möglichkeit geben, dass sich die Controls auch auf andere DPI-Einstellungen anpassen, sonst müsste man ja jedem seiner Clients sagen welche dpi-Werte er zu benutzen habe ??

    Nö, da gibts kein Patentrezept für, weil das ist ja auch Geschmacksache.
    .Net arbeitet mit Pixeln, und wie groß ein Pixel auffm Bildschirm dargestellt ist (DPI), weiß es nicht.

    Habe ich nun einen Screen mit vielen Pixeln, zB. 1920*1280, so nimmt ein Control der Größe 100*100 nur einen kleinen Raum darin ein, und das finde ich gut, weil so kann ich noch viele annere Controls angugge.

    Vielleicht finde ich das aber auch schlecht, weil mir 100*100 bisserl klein ist, besonders am Touch-Screen mit meine Wurst-Finger.

    Also wenn ich das schlecht finde, ist das bisserl problematisch, selbst wenn ein flexibles Layout programmiert ist, bei dem man das Anwendungsfenster so groß ziehen kann, wie man möchte. Und selbst wenn man die Knöppe auffm TableLayoutPanel mit Dock.Fill anweist, mitzuwachsen.

    Weil die Schrift auf den Knöppen wächst nicht mit - da müssteman nun im Knopp_Resized-Event einen anneren Font mit größerer Size nehmen.
    Was dann wiederum annersrum problematisch werden kann, nämlich wenn du die Anwendung klein ziehst, schrumpelt auch die Schrift bis zur Unlesbarkeit.

    Eine Alternative zum Font-Austauschen wäre auch Ownerdrawing. Also dass man die Schrift sehr groß in einem GraphicsPath anlegt, und beim Painten auf genau passend zusammenschrumpelt - mitte Matrix-Klasse.

    (Wpf hat da noch wesentlich bessere Möglichkeiten.)