2016-06-07 5 views
0

Ich habe einen Button, und ich möchte es auf der rechten Seite des Containers (ein Panel) platzieren. Also ich versuche, Button Right-Eigenschaft gleich ist es ist Die Eigenschaft Left des Containers. Aber dieser Fehler wird angezeigt: Die Eigenschaft System.Windows.Forms.Control.Right hat keinen Setter.Die Eigenschaft "System.Windows.Forms.Control.Right" hat keinen Setter

This is a MSDN link :

+0

Haben Sie den Link gelesen? 'Die richtige Eigenschaft ist schreibgeschützt. Sie können diesen Eigenschaftswert indirekt ändern, indem Sie den Wert der Eigenschaften Links oder Breite ändern oder die Methoden SetBounds, SetBoundsCore, UpdateBounds oder SetClientSizeCore aufrufen. – Plutonix

+0

Das Recht wird als abgeleiteter Wert betrachtet. Daher müssen Sie eine oder beide Komponenten ändern , dh Links (oder X) und Breite. – TaW

Antwort

0

Sie benötigen die Left Eigenschaft des Steuerelements verwenden:

var panel = new Panel(); 
panel.Size = new Size(100, 100); 

var button = new Button(); 
button.Size = new Size(20, 10); 
button.Left = panel.Size.Width - button.Size.Width; 

Der Grund, warum Sie nicht die Right einstellen können, weil sie von Left + Width .Hier berechnet ist Diagramm um zu verstehen:

enter image description here

+0

Ich glaube, ich habe verstanden: Rechte Eigenschaft ist gleich der Summe ihres linken Containers und ihrer Breite. Tu ich das? – Majid

+0

@Majid Korrekt. Falls Sie interessiert sind, ist hier die Quelle für ['Control.Right.get'] (http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Control.cs,3637). – Xiaoy312

0

Right-Eigenschaft schreibgeschützt ist und es ändern Ich muss Linke Eigenschaft wie folgt ändern:

button.left=panel.right-button.width 

Und wenn Staat meine Form des maximierte ist, ich habe diesen Code in Form_Load Umfang zu schreiben.