C# Winform panel中添加子窗口时,子窗口出现错位问题

问题的解决通过:https://blog.csdn.net/Zzu_zzx/article/details/123857582?ops_request_misc=&request_id=&biz_id=102&utm_term=winform%E4%B8%80%E4%B8%AA%E7%95%8C%E9%9D%A2%E5%8A%A0%E8%BD%BD%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%95%8C%E9%9D%A2%E6%97%B6%E5%87%BA%E7%8E%B0%E9%94%99%E4%BD%8D&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-123857582.142^v73^control,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

感谢博主分享

其他记录:

  1. 要求添加子窗体的 panel字体及大小 ,Font属性与子窗体Font属性一致。

  1. 通过更改子窗体控件的位置,或者在panel.Controls.Add(form)后,修改form的location,没有效果,且会导致子窗体无法显示。

  1. 有博主通过this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 解决win10下的子窗体控件大小问题,但对于该问题无效果。

20230223软件重启后发现位置又发生变化:

  1. 字体被更改,但是更改字体后仍无效果,将子窗体的所有控件的字体调整,仍不生效。

  1. 解决办法:(1)承接子窗体的Panel在.Controls.Add(From)后,调整位置location。(2)子窗体各控件,可通过panel或groupbox整体调整所在子窗体中的位置location。

然后,重启后生效,但是多次启动后仍出现错误。。。

Form1:子窗体

Form1 frm=new Form1();

frm.FormBorderStyle = FormBorderStyle.None;//去除边框

panel1.Controls.Add(frm);

frm.Show();

如果代码如上,那么问题来了:

System.ArgumentException: 无法将顶级控件添加到控件。

对代码进行修改,添加语句:frm.TopLevel = false;//让子窗体不置顶

Form1 frm=new Form1();

frm.FormBorderStyle = FormBorderStyle.None;//去除边框

frm.TopLevel = false;//让子窗体不置顶

frm.Dock = DockStyle.Fill;布满

panel1.Controls.Add(frm);

frm.Show();

需要的功能可以在子窗体内实现

解决问题

转载于:https://blog.csdn.net/weixin_34414650/article/details/92485273?ops_request_misc=&request_id=&biz_id=102&utm_term=Winform%20panel%E4%B8%AD%E6%B7%BB%E5%8A%A0%E5%AD%90%E7%AA%97%E5%8F%A3%E6%97%B6%EF%BC%8C%E5%AD%90%E7%AA%97%E5%8F%A3%E5%87%BA%E7%8E%B0%E9%94%99%E4%BD%8D%E9%97%AE%E9%A2%98&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-92485273.142^v73^insert_down2,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

你可能感兴趣的:(C#,c#,开发语言)