Form auf Bildschirm an bestimmte Position platzieren (X,Y)



  • Nachdem ich ich C# jetzt so einigermaßen beherrsche (war nicht schwer, kann sehr gut C++) habe ich jetzt mit Visual Studio mein erstes Windows-Programm (Hello, World!) erstellt. Klappte auch alles, aber unschön ist:

    Das wenn ich den Button "Say Hello!" in dem Fenster (der Form) anklicke, kommt die Messagebox dazu immer zentriert am Display. Habe schon gegoogled, ist wohl nur mit Klimmzügen möglich, die Messagebox (MessageBox.Show()) zu positionieren. Da das Hauptfenster sehr klein ist, übersieht man die Messagebox leicht, ich hätte die gerne über dem Hauptfenster.

    Gibt es eine Möglichkeit das Fenster (die Form) beim Aufruf an eine bestimmte Position zu setzen (dann würde ích das zentrieren)?

    ...
    namespace HelloWinCs
    {
        public partial class HelloWinCs : Form
        {
            public HelloWinCs()
            {
                InitializeComponent();
            }
    
            private void SayHello_Click(object sender, EventArgs e)
            {
                MessageBox.Show("Hello, world!", "Hello with C#", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
                Application.Exit();
            }
        }
    }
    

    Eine Beschreibung für "InitializeComponent()" habe ich in der Visual Studio Hilfe (2005 - kann mir kein neueres leisten) nicht gefunden (gibt es da noch andere Versionen mit Argumenten?). Kann man das sonst noch im Konstruktor "HelloWinCs" irgendwie bestimmen oder vielleicht ganz anders?



  • InitializeComponent initialisiert die Form dahingehend, dass es die ganzen Konstruktoren der GUI-Elemente (die du im Designer da platziert hast) aufruft und die entsprechenden Eigenschaften zuweist. Da gibt's auch keine mehreren Versionen von 😉

    Deine eigene Form kannst du über die Eigenschaft "Location" platzieren wo du willst. Ansonsten würde ich es vermeiden, eine MessageBox an wilde Positionen zu platzieren, das ist eigentlich nicht normal und meistens gibt's auch wenig gute Gründe dafür 😉



  • @johan
    InitializeComponent ist keine Framework-Funktion, und daher auch nicht in der Framework-Doku dokumentiert. Müsste aber irgendwo in der Visual-Studio Doku zu finden sein.
    InitializeComponent ist eine Funktion die vom Visual-Studio Forms-Editor erzeugt und gewartet wird.
    Implementiert ist die in der MyForm.Designer.cs Datei.
    Und was sie macht hat GPC ja schon beschrieben.



  • [klugscheiss]
    MyForm.Designer.cs
    [/klugscheiss]



  • Danke, hab's korrigiert.



  • Vielen Dank für die informativen Antworten.


Anmelden zum Antworten