2009-07-10 6 views
2

Ich habe ein Steuerelement, das ich mit mehreren Eingabesteuerelementen darauf, einige Textfelder, ein Kombinationsfeld und ein Listenfeld unter anderem gebaut. Ein Textfeld, ein Kombinationsfeld, ein Listenfeld und ein paar Befehlsschaltflächen sind verankert, so dass sie mit dem Formular die Größe ändern. Das Kombinationsfeld ist links, oben und rechts verankert, das Listenfeld ist an allen vier Seiten verankert und die Schaltflächen sind unten und rechts verankert. Sie alle ändern ihre Größe und behalten ihre Position korrekt bei. Das Problem ist das Textfeld, das ich zu verankern versuche, genau wie das Kombinationsfeld. Es läuft zur rechten Seite des Formulars zur Laufzeit, wenn es rechts verankert ist. Allerdings habe ich dieses Problem mit keinem der vorhandenen Steuerelemente auf dem Formular, die rechts verankert sind, sie bleiben alle in der richtigen Position.Verankerte Kontrolle läuft aus dem Formular von selbst

Ich habe versucht, ein zusätzliches Textfeld und Combobox hinzufügen und verankern sie auf der rechten Seite, aber sie laufen auch über die rechte Kante des Formulars. Warum funktionieren die vorhandenen Steuerelemente, abgesehen von einem, so, wie sie sollen, aber das eine Steuerelement und das neue Steuerelement zu weit?

Als Referenz habe ich den Designer generierten Code manipuliert, um die Reihenfolge der Anweisungen neu anzuordnen, so dass die Verankerung nach der Position und Breite erfolgt, aber das hat nicht geholfen. Hier ist der Code wie für den abgestürzten Textbox ist:

 // 
     // txtComments 
     // 
     this.txtComments.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right))); 
     this.txtComments.Location = new System.Drawing.Point(430, 6); 
     this.txtComments.Name = "txtComments"; 
     this.txtComments.Size = new System.Drawing.Size(166, 20); 
     this.txtComments.TabIndex = 25; 

Und der Code für die richtig verhalten Combobox:

 // 
     // cbMacroList 
     // 
     this.cbMacroList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right))); 
     this.cbMacroList.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
     this.cbMacroList.FormattingEnabled = true; 
     this.cbMacroList.Location = new System.Drawing.Point(128, 78); 
     this.cbMacroList.Name = "cbMacroList"; 
     this.cbMacroList.Size = new System.Drawing.Size(468, 21); 
     this.cbMacroList.TabIndex = 30; 
     this.cbMacroList.SelectedIndexChanged += new System.EventHandler(this.cbMacroList_SelectedIndexChanged); 

Ein letztes Stück Hintergrund ist, dass alle diese Kontrollen aus einem Formular kam, als Ich stellte fest, dass ich die Funktionalität wiederverwenden müsste, die das Formular in einer anderen Form zur Verfügung stellte. Ich habe alle Steuerelemente ausgewählt, ausgeschnitten und dann auf das neue UserControl eingefügt. Vor der Migration zum UserControl funktionierte alles einwandfrei. Dies begann nach der Migration zu zeigen.

Antwort

0

Das ist ziemlich seltsam, aber das Löschen des Steuerelements aus dem Formular und das erneute Ablegen haben das Problem gelöst. Ich habe den vom Designer generierten Code in dem Formular erneut überprüft, in dem ich das Steuerelement verwende, und ich sehe absolut keinen Unterschied in der Art, wie es erstellt oder dem Formular hinzugefügt wird. Und doch ist es behoben. Ich frage mich, warum es sich so verhalten würde ...?

+0

Ich habe dieses Problem heute selbst mit einer 'ListBox' erlebt - Korrekt auf meinem Rechner verankert, aber nicht auf einem anderen. Ich habe versucht, es aus dem Projekt zu entfernen und es erneut hinzuzufügen, aber das behob das Problem nicht (sogar VS dazwischen zu schließen). Am Ende habe ich die 'ListBox' durch eine' TextBox' ersetzt (sieht für mich wie ein Fehler aus) –

1

Sind Sie sicher, dass Ihre Fehlverhaltenskontrolle nicht von etwas beeinflusst wird, das Sie nicht erwarten, wie einem Panel oder etwas?

+0

Ich habe überprüft, und es wird hinzugefügt "this.Controls", also keine Panels oder irgendetwas mit Positionierung und Layout zu stören. – jasonh

Verwandte Themen