2016-06-27 5 views
-1

나는 사용자 정의 컨트롤을 사용했다. 나는 또한 사용자 정의 컨트롤에 최소 크기를 설정했습니다. 크기를 조정할 수 있도록 다음 코드를 사용했습니다.크기 조정을 제한하기 위해 최소 크기를 설정하는 방법은 무엇입니까?

private const int cGrip = 16;  // Grip size 
private const int cCaption = 32; // Caption bar height; 
protected override void WndProc(ref Message m) 
{ 
    if (m.Msg == 0x84) 
    { 
     // Trap WM_NCHITTEST 
     System.Drawing.Point pos = new System.Drawing.Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16); 
     pos = this.PointToClient(pos); 
     if (pos.Y < cCaption) 
     { 
      m.Result = (IntPtr)2; // HTCAPTION 
      return; 
     } 
     if (pos.X >= this.MinimumSize.Width - cGrip && pos.Y >= this.MinimumSize.Height - cGrip) 
     { 
       m.Result = (IntPtr)17; // HTBOTTOMRIGHT 
       return; 
      } 
    } 
    base.WndProc(ref m); 
} 

그러나 최소 크기 설정에 실패했습니다. 0.please 크기로 크기 조정은 아래 이미지를 참조하십시오. 크기를 제한하기 위해 최소 크기를 설정하고 싶습니다. 어떤 해결책을 제안 해 주시겠습니까?

enter image description here

+1

왜 'UserControl'디자이너에서 설정하지 않았습니까? – C4u

+0

WM_NCHITTEST는 최소 크기를 설정하지 않습니다. WM_GETMINMAXINFO에 대한 응답으로이를 수행해야합니다. 또는 WinForms에서 [MinimumSize 속성] (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.minimumsize.aspx)을 설정하면됩니다. WM_NCHITTEST가 스스로 처리하도록하십시오. –

답변

1

나는 완전히 당신이 달성하려고하는 것을 이해하지 않았습니다. 그러나 Windows Forms에서 UserControl을 채우는 경우 컨트롤의 MinimumSize 속성을 설정하기 만하면됩니다. 그게 옳지 않다면 우리가 이해할 수 있도록 더 많은 것을 설명하고 스크린 샷을 & 코드 스 니펫으로 공유하십시오.

관련 문제