c#中怎样确保无论父窗体如何缩放,子窗体始终大小不变且在父窗体中间显示

如题
自己解决了。谢谢大家。思路是在父窗体的resize事件中,重新计算子窗体的location即可。
代码如下:
Point loc=new Point();
loc.X=(this.Width-chlidForm.Width)/2;
loc.Y=(this.Height-chlidForm.Height)/2;
childForm.Location=new Point(loc.X,loc.Y);
childForm.Visible=true;
chlidForm.Activate();
return;

将子窗体的StartPosition属性设置为ParentCenter,show窗体之前记得建立ownerform-subform关系追问

不行吧,我问的主要是父窗体变化大小时,怎样能让子窗体也随着其一直居中。

追答

原来如此,那么你就必须实现父窗体的SizeChanged事件,用于同步的移动子窗体的位置,只能这样了

温馨提示:内容为网友见解,仅供参考
无其他回答

c#中怎样确保无论父窗体如何缩放,子窗体始终大小不变且在父窗体中间显示...
将子窗体的StartPosition属性设置为ParentCenter,show窗体之前记得建立ownerform-subform关系

C#如何让控件一直在窗体中间显示
C#控件都有一个Anchor属性,而且Anchor属性的默认值都是Top,Left,因此当窗体大小变化时,你会发现控件的位置相对于整个窗体而言发生了变化。想让控件一直在窗体中间显示,那么可以修改Anchor属性,将其值修改为None,再次预览就会发现控件会一直在窗体中间显示。

c#双层窗体如何保持子窗体永远在父窗体之上?
frm.MdiParent = this; \/\/设置子窗体的父窗体为frmMian() 也就是this frm.Show(); \/\/显示子窗体

C#程序:实现窗体和控件的自由缩放的代码或属性
这个简单:首先点击你窗体中的控件,看属性栏找布局里的Anchor 改属性:Top,Bottom变成 Top,Bottom,Left,Right。

C# 如何让子窗体始终显示在mdi窗体中,急!!!
你说的错误是因为你显示子窗体时用的是ShowDialog方法 不能用这个 只能用Show方法 还有如果你想在开始的时候窗体就最大化可以这样 f2.MdiParent = this;f2.WindowState = FormWindowState.Maximized;f2.Show();

C#怎么让子窗体和父窗体同时显示
private void Form1_Load(object sender, EventArgs e){ Form2 f2 = new Form2();f2.MdiParent = this;f2.Show();}在父窗体加载事件里加载子窗体就行了

在c#中如何设置当窗体最大化时,,,窗体内容也变大,,,不是像下面的那样...
正确的做法是:不允许放大或缩小窗体即可。给棂主的建议是,布局时注意部局统一左上基准,包括背景图片。如果有时要居中时,统一居中。winform不同于wpf,放大后会破坏原有的设计。一般情况下会选用没有工具栏的窗体,然后在最上连再增加自己定义的标题栏。而这种技术在wpf中更好办一些,所以不会提供给...

C#中如何先弹出子窗体,父窗体隐藏,而后,单击子窗体的按钮,子窗体关闭...
如果是登录窗口,一般的做法是更改program.cs,先显示登录窗口,通过后再显示主窗体,假定你的登录窗体叫Login,主窗体叫MainForm static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Login login = new Login(); login.ShowDialog(...

C#winform中父窗体打开后下面有一排导航,导航打开子窗体,子窗体停靠在...
1、在 子窗体.Show() 之前写一句 子窗体.MdiParent = this; 这样show出来的子窗才会真正是父窗体与子窗体,子窗体将在父窗体的范围内,而且可以多次打开,不过我个人不太建议这种做法;2、把要show出来的窗体的TopMost属性设为true; (个人推荐)...

c# winform窗体 ,如何父窗体最大化时,子窗体也跟着最大化。贴代码,具体...
protected override void OnResize(EventArgs e){ if(WindowState == FormWindowState.Maximized)\/\/最大化时所需的操作 { foreach (Form childrenForm in this.MdiChildren){ \/\/检测是不是当前子窗体名称 if (childrenForm.Name == "子窗体名称"){ \/\/是的话就是把最大化 childrenForm.WindowState =...

相似回答