4

ウィンドウステートを最大化して親内に子フォームを開きたい。

ユーザーにその子ウィンドウを最小化/最大化/閉じさせたくありません。

だから私BorderStyle = Noneはchildwindowに設定し、またプロパティをに設定し、また設定MaximizeBoxしますMinimizeBoxFalseWindowState = Maximized

しかし、プログラムを実行すると、その childForm のすべてMinimizeのボタンRestoreとボタンが最大化された状態で表示されます。Close

しかし、クリックRestore Downすると、その子フォームの境界線はありません..現在、最大化された状態に復元する方法もありません..

何か不足していますか?これはバグですか?それを正しく機能させる適切な方法は何ですか?

4

4 に答える 4

0

独自のフォーム (custome フォーム) を作成し、そのカスタム フォームを mdi 子フォームに継承できます。

以下のコードを「カスタムフォーム」に配置する必要があります

   public partial class BaseForm : Form
   {
       public BaseForm()
       {
           InitializeComponent();
           StartPosition = FormStartPosition.WindowsDefaultLocation;
           MaximizeBox = false;
           Width = 806;
          //Width = 850;
          //Height = 760;
           Height = 730;
          //Width = 790;
          //Height = 617;
    }

//[DllImport("user32.dll")]
//[return: MarshalAs(UnmanagedType.Bool)]
//private static extern bool ShowScrollBar(IntPtr hWnd, int wBar, bool bShow);
//private enum ScrollBarDirection { SB_HORZ = 0, SB_VERT = 1, SB_CTL = 2, SB_BOTH = 3 } 


protected override void WndProc(ref Message m)
{
  const int WM_SYSCOMMAND = 0x0112;
  const int SC_MOVE = 0xF010;
  //ShowScrollBar(this.Handle, (int)ScrollBarDirection.SB_BOTH, false);
  switch (m.Msg)
  {
    case WM_SYSCOMMAND:
      int command = m.WParam.ToInt32() & 0xfff0;
      if (command == SC_MOVE)
        return;
      break;
   }
   base.WndProc(ref m);
 }
}

minimum size to '0' mdi子フォームを 配置する必要があり、配置する必要がありますsize to Width = 806; Height = 730;

お役に立てば幸いです...

于 2011-10-22T12:00:44.550 に答える
0

最大に設定しないでください。MdiParent の幅と高さを設定するだけです...

Height = this.Height;
Width = this.Width;

this.Width は親フォームでなければなりません

これが役に立てば幸いです。私にメールを送ってください:)

beanlovin@gmail.com

于 2011-11-01T14:34:12.100 に答える
-1
Form1 fr = new Form1(); 
fr.MdiParent = this; //set form's parent to Mdiform
fr.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; //set form without maximize,minimize and close button
fr.Dock = DockStyle.Fill; //set form's dock property to fill
fr.Show();
于 2014-06-17T11:56:28.990 に答える