16

저는 다소 복잡한 UserControl을 가지고 있으며 Visual Studio 2008은 작업 할 때 다소 혼란 스럽습니다. Designer를 사용하여 컨트롤을 열 때마다 Designer에서 설정 한 무해한 값 즉, Size 속성의 초기화를 즉시 변경하기로 결정합니다. 이러한 변경 사항을 저장하고 닫은 다음 다시 열면 거의 항상 내 컨트롤의 다른 구성 요소가 초기 크기가 변경되면서 무한대로 변경되어야합니다. 운좋게도 자동 크기 조정을 사방에 사용하고 있기 때문에 이러한 변경은 무해합니다. 그러나이 작업은 상당히 성가시다. 나는 잘못 된 것을 알아내는 것을 어디서부터 시작 해야할지에 대해 가장 안좋은 생각이 없습니다. 지금 당장 디자이너가 컨트롤을 열 때마다 디자이너가 자동 크기 조정 결과를 초기 크기 필드에 다시 지정한다는 생각 밖에 없습니다. 원인/수정에 대한 아이디어가 있습니까?Visual Studio Designer는 항상 내 컨트롤을 변경하려고합니다.

편집 : 또한 응용 프로그램 설정을 사용하여 응용 프로그램을 실행하는 동안 크기를 조정할 수있는 자식 구성 요소의 크기를 저장하지만 실제로 디자이너가 기본값을 사용해야한다는 사실을 충분히 이해하기를 바랍니다.

+0

나는 완전히 이것을 얻는다. 그것은 정말로 자극적이다. 왜냐하면 그것은 모든 지긋 지긋한 시간을 소스 컨트롤에 요구하고, 때때로 변화를 깨는 것이다. – GWLlosa

+2

Visual Studio 2012에서 내 사용자 지정 컨트롤 내의 자식 컨트롤의 크기가 조정되는 것과 동일한 문제가 발생합니다. 당신을 위해 일했던 해결책에 대한 어떤 단어? – almostProgramming

답변

5

맞아요, 디자이너는 종종 속성에 기본값을 추가하려고합니다.

는 속성 선언의 상단에 추가 : 디자이너를 말할 것이다

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 

이 속성을 무시.

+0

Control에서 상속되고 비가 상 (사실, 재 선언하지 않고 바보 인 기본 클래스로 파이핑하지 않기 때문에) Size 속성을 사용하여이 작업을 수행 할 수 없습니다. 또한 기본적으로 out-of-the-box 구성 요소를 사용하고 있으므로이 모든 것을 내 자신의 사용자 지정 파생 클래스로 변경해야합니다. 실제로는 좋은 옵션도 아닙니다. –

+0

"새로 고침"하지 않고 Size 속성을 제어하는 ​​방법을 알지 못합니다. – Benjol

1

다소 비슷한 문제가 있습니다. Infragistics GroupBox를 상속받은 사용자 정의 컨트롤에서 사용하고 있으며 파생 클래스에서 모양과 느낌을 변경하려고합니다. 나는 그것을 기본 클래스에서 보호하도록 만들었으므로 파생 된 클래스에서 속성을 변경하는 것을 허용합니다. 그러나 그것을 구하지는 못합니다. 내가 열 때마다 - 나는 같은 기본 클래스의 이전 값을 얻는다.

아이디어가 있으십니까?

편집 : 알아 냈습니다.

위의 답변 중 하나에 대한 다양한 값을 시도합니다. [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 대신 [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]을 사용하면 변경된 속성에 대한 코드가 생성되고 원하는대로 작동합니다.

0

컨트롤의 DefaultSize 속성을 재정 의하여보십시오.

MSDN에서 : DefaultSize 속성은 처음 컨트롤을 만들 때 컨트롤의 크기를 나타냅니다.

+0

크기가 변경되는 것은 내 컨트롤이 아닙니다. 크기가 변경되는 것은 모두 자식 컨트롤입니다. –

8

아마도 도움이 될 수 있습니다 :
하나의 사용자 정의 UserControl을 삽입하면 FormDesigner (WPF, 웹 등 없음)에 이상한 동작이 나타났습니다.
다른 컨트롤 (GroupBox, EditBox, ComboBox) 크기가 무작위로 변경되었습니다 (나에게 일어난 폭).
크기를 조정하도록 선택한 컨트롤은 임의로 보이지만 vs2010을 다시 시작하면 항상 동일합니다. 삭제하고 다시 삽입하면 디자이너가 임의로 크기를 조정하는 다른 컨트롤을 선택합니다.

내 UserControl의 AutoScaleMode 속성을 "Font"에서 "Inherit"으로 변경했으며 다시 발생하지 않았습니다.

+0

네, 그렇습니다. 어쩌면 내가 명확하게 지정하지 않았을 수도 있습니다. WPF도 WebDesigner도 사용하고 있지 않습니다. –

+0

죄송합니다. 왜 내가 WPF에 대한 답변을했다고 생각하는지 모르겠다. –

+1

AutoScaleMode가 도움이되었습니다. 필자의 경우이 값을 None으로 설정하십시오. – transistor1

관련 문제