2010-07-09 15 views
6

Ich möchte nur wissen, ob es möglich ist, ein Windows-Formular auf dem Benutzerbildschirm anzudocken? Ich habe versucht, dies zu tun, indem ich die Position meines Formulars manuell auf die Koordinaten setze, die ich möchte. Mit dieser Methode kann der Benutzer die Position des Formulars jedoch nur durch Ziehen ändern. Ich möchte, dass das Formular an den oberen Teil des Bildschirms angedockt wird, da dieses Fensterformular als Menü für das von mir erstellte Projekt dienen wird.Wie docken Sie ein Windows-Formular in C#?

Vielen Dank. :)

Antwort

1

Also nach einigen Verbesserungen konnte ich endlich diesen Code arbeiten.

this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width/2 - 420), 0); 

stellte ich diese Zeile unterhalb der InitializeComponent() und dockt meine Form in die Mitte des Bildschirms mit dem, was die Auflösungswerte.

3

Ich würde die Verwendung der Control.Dock Eigenschaft zusammen mit einer der DockStyle Enumeration Werte betrachten.

Möglicherweise müssen Sie auch mit der Layout spielen, so dass Sie die Steuerelemente Ihres Formulars abhängig von der ausgewählten DockStyle unterschiedlich formatieren können.

Sie müssen meiner Meinung nach die Control.Location Eigenschaft in Betracht ziehen, so dass Sie wissen, welcher Wert DockStyle Ihr Formular mit zu docken.

EDIT # 1

Ihr Windows Form hat eine Dock Eigenschaft, wie es von Control erbt.

  1. Jedes Mal, wenn Ihr Formular kommt näher an den rechten Seite des Bildschirms, zum Beispiel, oder die MDI-Container, Sie mögen sie andocken, rechts:

    die folgende seien in Betracht ziehen? (Kleines Wort hier spielen ... = P) Also, Sie müssen das Control.LocationChanged Event abonnieren.

    private void myForm_LocationChanged(object sender, EventArgs e) { 
        if (this.Location.X > 900) then 
         this.Dock = DockStyle.Right; 
        else if (this.Location.X < 150) then 
         this.Dock = DockStyle.Left; 
        else if (this.Location.Y > 600) then 
         this.Dock = DockStyle.Bottom; 
        else if (this.Location.Y < 150) then 
         this.Dock = DockStyle.Top; 
        else 
         this.Dock = DockStyle.None; 
    } 
    

Tat anstelle von konstanten Werten, sollten Sie die aktuelle Desktop-Auflösung verwenden und ein Verhältnis von ihm zu berechnen, wo Sie Ihr Docking auftreten sollen.

*** Haftungsausschluss: **** Dieser Code wird zur Verfügung gestellt und wurde nicht getestet. Dieser Algorithmus ist hoffentlich genug, um Sie durch den Docking-Prozess zu führen, wie Sie es brauchen. Weitere Unterstützung kann auf Anfrage mitgebracht werden. * =)

Es scheint, dass die Eigenschaft Form.DesktopLocation das richtige Werkzeug für den Job ist, wie für Ihr Hauptfenster, zum Beispiel Ihren MDI-Container. Was die anderen Fenster anbelangt, würde ich etwas mitnehmen, das wie das mitgelieferte Codebeispiel aussieht.

Hilft das?

EDIT # 2

Wenn Sie Formular überlappend, vielleicht die Control.BringToFront() Methode konnte es vor oder nach dem Aufruf der Control.Show() Methode, je nach verhindern, was für Sie am besten funktioniert.

+0

hallo, danke für die Antwort festlegen können Sie die Benutzer-Optionen wollen wegzunehmen. Ich bin ein wenig neu zu den umfangreichen Funktionen von Visual Studio 2008 und ich weiß nicht, wie ich die Control.Dock-Eigenschaft verwenden kann. Können Sie mir bitte einige Beispiele geben, wie ich diese Eigenschaften nutzen kann? Danke :) – Smiley

+0

Das ist zum Andocken Kontrollen in einem Formular, nicht zum Andocken des gesamten Formulars. –

+0

@Jouke Van Der Maas: Ich denke du hast meine Antwort nicht gelesen. Ich erwähne die Eigenschaft 'DesktopLocation', also das gesamte Fenster auf dem Desktop anzudocken. Außerdem schlage ich vor, dass dies ein besseres Werkzeug für den Job sein könnte, nachdem das OP seine Idee präzisiert hat. Bitte überarbeiten Sie Ihren Kommentar entsprechend. –

0

Indem Sie die FormBorderStyle Ihres Formulars auf None setzen, entfernen Sie den Ziehgriff vom Benutzer, damit sie ihn nicht mit der Maus bewegen können.

Dann müssen Sie es nur dort platzieren, wo Sie möchten.

Wenn Sie wirklich auch die ShowInTaskbar Eigenschaft auf false