2016-06-27 10 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フォームでUserControlを設定する場合は、コントロールのMinimumSizeプロパティを設定するだけです。それが正しくない場合は、わかりやすく説明し、スクリーンショットを&のコードスニペットで共有してください。

関連する問題