J'ai essayé le code suivant:
this.balancePanel.Location.X = this.optionsPanel.Location.X;
pour modifier l'emplacement d'un panneau que j'ai créé en mode conception pendant l'exécution du programme, mais une erreur est renvoyée:
Cannot modify the return value of 'System.Windows.Forms.Control.Location' because it is not a variable
alors la question est comment puis-je le faire?
La propriété Location
a le type Point
qui est une structure.
Au lieu d'essayer de modifier la Point
existante, essayez d'affecter un nouvel objet Point
:
this.balancePanel.Location = new Point(
this.optionsPanel.Location.X,
this.balancePanel.Location.Y
);
Location est une structure. S'il n'y a pas de membre pratique, vous devrez réaffecter l'emplacement complet:
this.balancePanel.Location = new Point(
this.optionsPanel.Location.X,
this.balancePanel.Location.Y);
La plupart des structures sont également immuables, mais dans le cas rare (et déroutant) de mutabilité, vous pouvez également copier, éditer, copier;
var loc = this.balancePanel.Location;
loc.X = this.optionsPanel.Location.X;
this.balancePanel.Location = loc;
Bien que je ne recommande pas ce qui précède, puisque les structures devraient idéalement être immuables.
Si BalancePanel ne fonctionne pas, vous pouvez utiliser ceci:
this.Location = new Point(127,283);
ou
anotherObject.Location = new Point(127,283)
Vous devez passer le point entier à l'emplacement
var point = new Point(50, 100);
this.balancePanel.Location = point;
Lorsque la propriété verrouillée du panneau parent est définie sur true, nous ne pouvons pas modifier la propriété location et celle-ci se comportera comme si elle était en lecture seule.