2009-06-09 3 views
11

값을 반환하는 메서드가 있고이 값을 Windows 양식 응용 프로그램에서 레이블의 새 위치로 지정합니다. 라벨의 위치가 변수가 아니라고 들었습니다. objectA는 레이블의 이름입니다.C#의 레이블 위치 업데이트?

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

어떻게하면됩니까?

답변

12

사용 Left 속성이 나에게 작동하는 Label

objectA.Left = 100; 
+1

이 그것을 사용하지 않는 어떤 이유가 .... 가장 간단한 것 같습니다를? – avaleske

+2

결국 Left 속성과 Location 속성은 모두 SetBounds 메서드를 내부적으로 사용합니다. Left 속성의 장점은 새로운 Point 개체를 만들 필요가 없다는 것입니다. 강렬하게 수행하면 마녀가 좀 더 빠를 수도 있습니다 ... –

18

위치 속성은 값 유형 인 Point 유형입니다. 따라서이 속성은 위치 값의 복사본을 반환하므로이 복사본에 X를 설정하면 레이블에 아무런 영향을 미치지 않습니다. 컴파일러는 오류를보고 수정할 수 있도록 오류를 생성합니다. 대신 그 작업을 수행 할 수 있습니다

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

(새로 고침에 대한 호출은 쓸모가)

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

위치에는 변수, 단지 공용 속성입니다. 부모를 업데이트하는 이벤트가 없으면 속성을 통해 변수를 변경하는 것은 좋지 않습니다.

7

좌표 X 변경

this.label1.Location = new Point(10, 10); 
심지어 새로 고침 정도 SuspendLayout 등

를 호출 할 필요는 없습니다

이게 도움이 될 것입니다.

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

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

0

그 구조체에 대한 직접 참조가있는 경우에만 구조체의 속성을 설정할 수 있습니다

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