Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MDI子窗体-大小为工作区的一半_C#_Resize_Mdi_Window Resize_Mdichild - Fatal编程技术网

C#MDI子窗体-大小为工作区的一半

C#MDI子窗体-大小为工作区的一半,c#,resize,mdi,window-resize,mdichild,C#,Resize,Mdi,Window Resize,Mdichild,我们的程序正在使用MDI 是的,我知道,使用其他东西,MDI不好等等。客户端对MDI风格的UI更满意,所以我们坚持这样做。到目前为止,我们还没有发现像TDI或SDI的任何需要反正 我们希望能够做的一件事是自动将MDI子对象的大小调整为MDI客户端区域大小的一半;类似于在Windows7/8中,你可以将一个窗口拖到屏幕的一侧,它会调整窗口的大小以填满桌面的一半 我该怎么做 澄清一下,我不是在寻找对接,显然调整表单的大小很容易,我更感兴趣的是如何捕捉用户何时将表单拖到MDI客户端区域的边缘,并以某种

我们的程序正在使用MDI

是的,我知道,使用其他东西,MDI不好等等。客户端对MDI风格的UI更满意,所以我们坚持这样做。到目前为止,我们还没有发现像TDI或SDI的任何需要反正

我们希望能够做的一件事是自动将MDI子对象的大小调整为MDI客户端区域大小的一半;类似于在Windows7/8中,你可以将一个窗口拖到屏幕的一侧,它会调整窗口的大小以填满桌面的一半

我该怎么做

澄清一下,我不是在寻找对接,显然调整表单的大小很容易,我更感兴趣的是如何捕捉用户何时将表单拖到MDI客户端区域的边缘,并以某种方式集中该逻辑,以便我不会在每个表单中重复它。显示表单结束位置的轮廓也会令人愉快(同样,类似于Win7/8调整大小)


谢谢

你正处在一个受伤的世界

但以下是如何开始:

Form f = new Form();
f.ResizeEnd += f_ResizeEnd;
f.MdiParent = this;
f.Show();

void f_ResizeEnd(object sender, EventArgs e) {
  MdiClient mc = this.Controls.OfType<MdiClient>().First();
  Form f = sender as Form;
  if (f.Right >= mc.ClientSize.Width) {
    f.SetBounds(mc.ClientSize.Width / 2, 0,
                mc.ClientSize.Width / 2, mc.ClientSize.Height);
  }
}
Form f=新表单();
f、 ResizeEnd+=f_ResizeEnd;
f、 MdiParent=此;
f、 Show();
void f_ResizeEnd(对象发送方,事件参数e){
MdiClient mc=this.Controls.OfType().First();
表格f=作为表格的发送者;
如果(f.Right>=mc.ClientSize.Width){
f、 收进边界(mc.ClientSize.Width/2,0,
mc.ClientSize.Width/2,mc.ClientSize.Height);
}
}

谢谢。虽然最后我决定只添加一些toolstrip按钮来完成这项工作,而不是捕获表单移动/大小调整事件,但我还是对此进行了改进;事后看来,这似乎更符合逻辑。