Konsolenanwendung: Größe festlegen

  • VB.NET

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

    Konsolenanwendung: Größe festlegen

    Hey Leute,

    ich habe eine einfache Konsolenanwendung, und schaffe es einfach nicht, das Fenster auf eine bestimmte festgelegte Größe zu bringen. Ich habe zwar folgendes versucht:

    VB.NET-Quellcode

    1. Console.WindowWidth = 28
    2. Console.WindowHeight = 35
    ... aber dadurch wird bloß die Größe geändert, aber man kann sie trotzdem wieder verändern. Wie schaffe ich es, dass man die Größe des Fensters nicht mehr ändern kann?
    Schonmal danke für Hilfe,
    Marvin0509
    @StormySunshine:: Console.
    @Marvin0509:: Probier mal Console.SetWindowSize(w, h). Ob es geht, weiß ich jetzt nicht.
    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!
    @StormySunshine: Ich habe eine Konsolenanwendung, keine Windows Form. Da gibt es FormBorderStyle nicht.
    @RodFromGermany: Sorry, ich habs probiert, das ist aber leider im Endeffekt dasselbe was ich schon vorher probiert hatte, nur in einem Befehl. Aber man kann die Größe dann leider trotzdem immer noch verändern.
    Das Konsolenfenster lässt sich grundsätzlich nicht in der Größe fixieren.

    Es gibt nur die Möglichkeit, eine maximale Größe festzulegen. Console.SetWindowSize(int,int) verändert dabei lediglich die Größe des Rahmens, die (eigentlich*) nie größer als die Buffergröße sein kann. D.h. die Buffergröße legt fest, wie groß das Konsolenfenster maximal aufgezogen werden kann. Du kannst also mit Console.SetBufferSize(int, int) steuern, wie groß der Benutzer dein Konsolenfenster maximal aufziehen darf. Du kannst aber nicht verhindern, dass er es evtl. kleiner zieht (und hinterher wieder auf die Buffergröße vergrößert).

    Ich vermute aber irgendwie, du hast sowie was ganz anderes vor. Vermutlich möchtest du Ausgaben im Konsolenfenster vor dem Benutzer verbergen, indem du es so verkleinerst, dass die fragliche Anzeige außerhalb des Rahmens ist. Wenn das der Fall sein sollte, kann ich dir direkt sagen: Vergiss es. So funktioniert die Konsole nicht. Tatsächlich wird der Buffer für sämtliche Ausgaben in die Konsole benutzt. Ist eine ausgegebene Zeile länger als Buffer breit ist, gibt es automatisch einen Umbruch. Das einzige was man ggf. erzwingen kann, dass die Konsolenausgabe evtl. nach oben aus dem Buffer herausgeschoben wird, wenn unten mehr reinkommt als in den Buffer passt. Dann ist die Ausgabe tatsächlich "weg" (und kann auch nicht mehr reingescrollt werden). Wenn man die Fenstergröße kleiner wählt als die Buffergröße, bekommt das Fenster automatisch Scrollbalken, mit denen man halt nach wie vor den ganzen Buffer durch Scrollen einsehen kann.

    Desweiteren kann man über das Systemmenü des Fensters die Konsoleneigenschaften aufrufen und dort manuell (auch als Benutzer deines Programms) sowohl Fenster- als auch Buffergröße wieder ändern.

    *) Bei meinen Tests gerade habe ich festgestellt: Versuche ich aus VS heraus die Buffer- und Fenstergröße so zu setzen, dass letztere größer als erstere ist, bekomme ich eine Exception. Wähle ich den Buffer zu klein, gibts ebenfalls eine Exception (bei 10,10 zum Beispiel). Stell ich aber über den Eigenschaftendialog (aus dem Systemmenü des Konsolenfensters) die Werte ein, war es mir sogar möglich, eine kleinere Buffer- als Fenstergröße einzustellen. Ob er den Buffer dann überhaupt auf den eingestellten Wert verkleinert hat, weiß ich allerdings nicht, ich vermute aber eher nicht.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.