高分请教!不够在加。主窗体Panel中加载新的窗体Form2后,怎样动态设置Form2的Size、Location等……

CnEve 2005-07-12 02:27:14
如题:
请贴出参考代码..谢谢!
private void Form1_Load(object sender, System.EventArgs e)
{
frm2 = new Form2();
frm2.TopLevel = false;
this.panel2.Controls.Add(this.frm2);
frm2.Show();
}
...全文
457 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
emanlee 2006-02-07
  • 打赏
  • 举报
回复
学习
shilei831115 2005-07-15
  • 打赏
  • 举报
回复
this.frm2.ClientSize = new Size(panel2.Size.Width, panel2.Size.Height);

值得一试
CnEve 2005-07-15
  • 打赏
  • 举报
回复
自己搞定,还是用这个方法

this.frm2.ClientSize = new Size(panel2.Size.Width, panel2.Size.Height);
sqfeiyu 2005-07-13
  • 打赏
  • 举报
回复
關鍵的一點:
private void panel2_Resize(object sender, System.EventArgs e)
{
this.frm2.Parent=null;
this.frm2.Size=panel2.Size;
this.frm2.parent=panel2;
}
不用設定WindowState或Dock屬性都可以.
loveic 2005-07-13
  • 打赏
  • 举报
回复
Size abc=new Size(100,100);
Form1.Size=abc;
dqjia 2005-07-13
  • 打赏
  • 举报
回复
看了一下,可以把Form2做成用户控件,我就是这么做的.
free000 2005-07-12
  • 打赏
  • 举报
回复
你在panel2_Resize中先判断一下:if(frm2==null)return;
CnEve 2005-07-12
  • 打赏
  • 举报
回复
sqfeiyu(流星雨) :設置windowformstates=MAX啊!
问题就在,panel2.Dock=Fill 调整form1大小后,panel2中form2 不能随之改变大小呀

另我上面写的:
private void panel2_Resize(object sender, System.EventArgs e){
this.frm2.ClientSize = new System.Drawing.Size(panel2.Size.Width, panel2.Size.Height);
.....
编译无错,执行时(Error: 未将对象引用设置到对象的实例)
但连续点了4个一样的错误提示确认后,程序却可以正常执行,并且form1调整窗体大小form2也可以随之响应了。
再求解决方法,再次感谢各位!
sfanpu 2005-07-12
  • 打赏
  • 举报
回复
刚才试了一下,有错误:this.panel2.Controls.Add(this.frm2);

在Panel中可以添加一个form吗?感觉好奇怪呀。
sqfeiyu 2005-07-12
  • 打赏
  • 举报
回复
設置windowformstates=MAX啊!
CnEve 2005-07-12
  • 打赏
  • 举报
回复
Form 没有 Dock属性,怎么设置啊?
dqjia 2005-07-12
  • 打赏
  • 举报
回复
设置Dock属性不行吗?
CnEve 2005-07-12
  • 打赏
  • 举报
回复
liduke(天下有雪):试一下是不是在Resize事件发生时,form2还没有值呢
谢谢,要在哪个位置try?
CnEve 2005-07-12
  • 打赏
  • 举报
回复
re: NetDNASupport(爱因斯坦)
Form 好象没有Dock属性呀
liduke 2005-07-12
  • 打赏
  • 举报
回复
试一下是不是在Resize事件发生时,form2还没有值呢
CnEve 2005-07-12
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, System.EventArgs e)
{
frm2 = new Form2();
frm2.TopLevel = false;
this.panel2.Controls.Add(this.frm2);
frm2.Show();
}

private void panel2_Resize(object sender, System.EventArgs e)
{
try
{
this.frm2.ClientSize = new System.Drawing.Size(panel2.Size.Width, panel2.Size.Height);
}
catch(System.Exception Er)
{
MessageBox.Show(Er.ToString());
}
}

Error: 未将对象引用设置到对象的实例
lbtbox 2005-07-12
  • 打赏
  • 举报
回复
设置form2的anchor值
sqfeiyu 2005-07-12
  • 打赏
  • 举报
回复
Form2 form2=(Form2)this.panel2.Controls[0];
form2.Location=...;
form2.Size=...;
如果panel2中有多個控件,需要判斷哪一個是Form2
NetDNASupport 2005-07-12
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, System.EventArgs e)
{
frm2 = new Form2();
frm2.TopLevel = false;
this.panel2.Controls.Add(this.frm2);

// 设置 frm2 Dock 属性为 fill
//只要改变 panel2 的Size、Location 等 就能改变 frm2


frm2.Show();



}
CnEve 2005-07-12
  • 打赏
  • 举报
回复
我是想:在调整FORM1大小时,Form1.Panel1 中FORM2的大小也跟随动态自动调整

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧