2012-06-03 14 views
36

Ich versuche, eine mehrschichtige Hauptbildschirm-Anwendung zu erstellen. Ich habe oben einige Schaltflächen, die mit dem Hauptabschnitt der Anwendung verknüpft sind (z. B. Verwaltungsfenster für jede Entität im Modell).Wie WinForms UserControl die Größe seines Containers zu füllen

Wenn Sie auf eine dieser Schaltflächen klicken, wird das zugehörige Benutzersteuerelement in einem Panel angezeigt. Das Panel enthält die Benutzersteuerelemente, die wiederum die Benutzeroberfläche enthalten.

Das WinForms-Benutzersteuerelement verfügt nicht über die Eigenschaft Anchor oder Dock.

Ich habe versucht Einstellung Eigenschaft Usercontrol

AutoSize=True 

Und

private void ManageUsersControl_Load(object sender, EventArgs e) 
{ 
     this.Width = this.Parent.Width; 
     this.Width = this.Parent.Height; 
} 

Aber das hat nicht funktioniert.
Hinweis: Ich habe dieses Steuerelement dynamisch zur Laufzeit laden

+4

'UserControl' * hat * eine' Dock'-Eigenschaft - es erbt diese Eigenschaft von 'Control'. Siehe den Abschnitt Eigenschaften von http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol.aspx – MvanGeest

+0

die obige Anweisung "Die winforms usercontrol hat nicht die" Anker "oder" Dock "-Eigenschaft " war falsch. Ich habe auf dem UserControl nach "Dock" gesucht. Es sollte nur für Steuerelemente (untergeordnete Elemente) angezeigt werden, die dem Benutzersteuerelement hinzugefügt wurden. – codingbiz

+0

@MvanGeest ja es macht Sinn, aber warum ist es nicht in der Designer-Eigenschaft Grid? – Steve

Antwort

68

Versuchen Sie, die Dock Eigenschaft Fill Einstellung:

private void ManageUsersControl_Load(object sender, EventArgs e) 
{ 
     this.Dock = DockStyle.Fill; 
} 

Ich würde gesetzt auch AutoSize auf die Standardeinstellung, glaube ich False ist. Sehen Sie, wie das funktioniert ...

+3

Aus dem OP: 'Die winforms usercontrol hat nicht die" Anker "oder" Dock "-Eigenschaft. –

+0

@PaulSasik: Die OP war wahrscheinlich falsch; Sonst wäre es kein 'UserControl'. – Douglas

+2

OK das überrascht mich wirklich. Weißt du, warum diese Eigenschaft nicht im UserControl-Designer-Eigenschaftenraster ist? Übrigens funktioniert es perfekt in der Laufzeit. – Steve

-1
UserControl1 myusercontrol = new UserControl1(); 
      myusercontrol.Dock = DockStyle.Fill;//Dock Prope. Fill user Control Contrainer 
      TabPage myTabPage = new TabPage();//New Tab Create 
      myTabPage.Text = "Wel-Come Page";//Tab Header Txt 
      myTabPage.Controls.Add(myusercontrol); 
      tabControl1.TabPages.Add(myTabPage); 
-3

In der resize-Ereignis Benutzersteuerung.

private void MyTextBox_Resize(object sender, EventArgs e) 
     { 
      this.Width = textBox1.Width; 
      this.Height = textBox1.Height; 
     }