2013-11-26 5 views
0

나는이 문제를 해결할 수 없습니다. 240의 너비를 가진 FlowLayoutPanel을 가지고 있습니다. 같은 너비의 사용자 지정 컨트롤을 만든 다음 프로그래밍 방식으로 패널에 추가합니다. 완벽하게 맞을 것으로 기대하지만 그렇지 않습니다. 내가 추가하는 컨트롤이 패널보다 훨씬 크게 보입니다. 이상한 동작으로 FlowLayoutPanel에 컨트롤을 추가했습니다.

재미있는 것은

... 난 패널 및 디버깅하는 동안 컨트롤 모두의 폭을 확인하고 그들은 여전히 ​​240 것을

어떤 생각인가? 미리 감사드립니다!

+0

컨트롤의 여백/여백 값이 달라 집니까? 그들을 제로로 해보십시오. –

답변

1

UserControl은 양식과 마찬가지로 양식의 출처를 기억합니다. 여기서 진단은 비디오 어댑터의 인치당 도트 수 설정이 사용하려고하는 컴퓨터보다 높은 값으로 설정된 컴퓨터에서 설계되었다는 것입니다. 따라서 Winforms는 차이를 보완하고 원래 디자인 크기 인 인치에 맞게 컨트롤을 다시 조정합니다. 따라서 픽셀의 컨트롤의 Size 속성은 DPI 비율만큼 커집니다.

UserControl의 Designer.cs 파일을보고 진단 할 수 있습니다. 당신이 볼 때까지의 InitializeComponent() 메서드의 하단으로 스크롤 :

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 

AutoScaleDimensions 속성 값이 기억하는 일을한다. 표시된 값은 96 DPI에서 실행되는 시스템과 관련이 있습니다. 양식의 Designer.cs 파일에서 동일한 속성 할당과 비교하여 불일치가있을 것으로 예상하십시오.

사용자 정의 컨트롤의 Designer.cs 파일에서 값을 편집하여 양식의 값과 일치 시키면 해결할 수 있습니다. 그러나 이미지가 여전히 다른 컨트롤과 올바르게 정렬되어 있고 글꼴이 컨트롤에 맞는지 확인해야합니다. 기본 설정을 유지하지 않으면 부모로부터 상속되지 않습니다. 잘못 가고있는 것을 쉽게 알 수 있습니다. 일반적으로 사용하는 기계를 동일한 설정으로 유지하면 문제가 발생하지 않습니다.

+0

큰 설명, 고마워. 나는 두 대의 컴퓨터로 개발 중이며 당신이 나에게 말한 해결책은 그 트릭을했습니다. – user449689

관련 문제