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
Antwort
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:
Ich glaube, ich habe verstanden: Rechte Eigenschaft ist gleich der Summe ihres linken Containers und ihrer Breite. Tu ich das? – Majid
@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
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.
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
Das Recht wird als abgeleiteter Wert betrachtet. Daher müssen Sie eine oder beide Komponenten ändern , dh Links (oder X) und Breite. – TaW