値を返すメソッドがあり、この値をWindowsフォームアプリケーションのラベルの新しい場所にします。しかし、レーベルの場所は変数ではないと言われています。 objectAはラベルの名前です。
objectA.Location.X = (int)A.position;
objectA.Refresh();
どうすればこれを行うことができますか?
Left
プロパティを使用して、Label
のX座標を変更します
objectA.Left = 100;
locationプロパティは、値型であるPoint型です。したがって、プロパティは場所の値のコピーを返すため、このコピーにXを設定してもラベルには影響しません。コンパイラはそれを認識し、エラーを生成して修正できるようにします。あなたは代わりにそれをすることができます:
objectA.Location = new Point((int)A.position, objectA.Location.Y);
(Refreshの呼び出しは役に立ちません)
これは私にはうまくいきます
this.label1.Location = new Point(10, 10);
RefreshやSuspendLayoutなどを呼び出す必要はありません。
だからこれはあなたを助けるはずです
this.label1.Location = new Point((int)A.position, (int)A.otherpos);
objectname.Location = System.Drawing.Point(100,100);
objectA.Location = new Point((int)A.position, objectA.Location.Y);
objectA.Refresh();
場所は変数ではなく、パブリックプロパティです。親を更新するイベントがない限り、プロパティを介して変数を変更することは悪い考えです。
構造体への直接参照がある場合にのみ、構造体のプロパティを設定できます。
Point loc = objectA.Location;
loc.X = (int)A.position;
objectA.Location = loc;