web-dev-qa-db-ja.com

C#でラベルの場所を更新しますか?

値を返すメソッドがあり、この値をWindowsフォームアプリケーションのラベルの新しい場所にします。しかし、レーベルの場所は変数ではないと言われています。 objectAはラベルの名前です。

objectA.Location.X = (int)A.position;
objectA.Refresh();

どうすればこれを行うことができますか?

13
avaleske

Leftプロパティを使用して、LabelのX座標を変更します

objectA.Left = 100;
18
Julien Poulin

locationプロパティは、値型であるPoint型です。したがって、プロパティは場所の値のコピーを返すため、このコピーにXを設定してもラベルには影響しません。コンパイラはそれを認識し、エラーを生成して修正できるようにします。あなたは代わりにそれをすることができます:

objectA.Location = new Point((int)A.position, objectA.Location.Y);

(Refreshの呼び出しは役に立ちません)

19
Thomas Levesque

これは私にはうまくいきます

this.label1.Location = new Point(10, 10);

RefreshやSuspendLayoutなどを呼び出す必要はありません。

だからこれはあなたを助けるはずです

this.label1.Location = new Point((int)A.position, (int)A.otherpos);
9
RomanT

objectname.Location = System.Drawing.Point(100,100);

1
Alynuzzu
objectA.Location = new Point((int)A.position, objectA.Location.Y);
objectA.Refresh();

場所は変数ではなく、パブリックプロパティです。親を更新するイベントがない限り、プロパティを介して変数を変更することは悪い考えです。

0
Alin Vasile

構造体への直接参照がある場合にのみ、構造体のプロパティを設定できます。

Point loc = objectA.Location;
loc.X = (int)A.position;
objectA.Location = loc;
0
Miguel Angelo