c# winform 如何动态设置窗体大小?

lsd123 2009-07-02 07:14:07
private void FrmMain_Load(object sender, EventArgs e)
{
ChangeSize(2);
}


private void ChangeSize(int type)
{
if(type==1)
{
this.Size = new Size(970, 515);
}
else
{
this.Size = new Size(698, 515);
}
}

这样为什么不起作用?
...全文
5625 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
XPR 2010-08-22
  • 打赏
  • 举报
回复
学习一下!!!
netstray 2009-07-02
  • 打赏
  • 举报
回复
学习了一招了
lsd123 2009-07-02
  • 打赏
  • 举报
回复
谢谢两位的关注,找到原因了,散分了

private void ChangeSize(int type)
{
if(type==1)
{
this.Size = new Size(970, 525);
this.lable1.Visible = true;
}
else
{
this.lable1.Visible = false;//移到前面就可以了,先false掉
this.Size = new Size(698, 525);
//this.lable1.Visible = false;
}
}


lsd123 2009-07-02
  • 打赏
  • 举报
回复
谢谢,没有,
你那里U盘拔出时大小会变化吗?
ghost5216 2009-07-02
  • 打赏
  • 举报
回复
你确定别的地方没设置lable1?
测试了你的代码 没啥问题
lsd123 2009-07-02
  • 打赏
  • 举报
回复
         if (m.WParam.ToInt32() == WM_DEVICEMOVECOMPLETE)
{
this.leftPanelTree.ShowDeviceChanged("WM_DEVICEMOVECOMPLETE");//U盘拔出
ChangeSize(2);//大小为什么会不变化?,但lable1会不可见
}

就是U盘拔出时不能正常变化大小?

lsd123 2009-07-02
  • 打赏
  • 举报
回复
private void ChangeSize(int type)
{
if(type==1)
{
this.Size = new Size(970, 525);
this.lable1.Visible = true;
}
else
{
this.Size = new Size(698, 525);
this.lable1.Visible = false;
}
}

/// <summary>
/// 监视Windows消息
/// </summary>
/// <param name="m"></param>
protected override void WndProc(ref Message m)
{
const int WM_DEVICECHANGE = 0x219;
const int WM_DEVICEARRVIAL = 0x8000;//如果m.Msg的值为0x8000那么表示有U盘插入
const int WM_DEVICEMOVECOMPLETE = 0x8004;//U盘拔出
switch (m.Msg)
{
case WM_DEVICECHANGE:
{
this.leftPanelTree.ShowDeviceChanged("WM_DEVICECHANGE");
if (m.WParam.ToInt32() == WM_DEVICEARRVIAL)
{
this.leftPanelTree.ShowDeviceChanged("WM_DEVICEARRVIAL");//U盘插入
ChangeSize(1);//能正常变大,lable1也会不可见
}
else if (m.WParam.ToInt32() == WM_DEVICEMOVECOMPLETE)
{
this.leftPanelTree.ShowDeviceChanged("WM_DEVICEMOVECOMPLETE");//U盘拔出
ChangeSize(2);//大小为什么会不变化?,但lable1会不可见
}
}
break;
}
base.WndProc(ref m); //将系统消息传递自父类的WndProc
}
lsd123 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lianshaohua 的回复:]
load完了再写这段代码
[/Quote]

谢谢,我试试
ztenv 2009-07-02
  • 打赏
  • 举报
回复
load完了再写这段代码
ghost5216 2009-07-02
  • 打赏
  • 举报
回复
好使
会根据
if(type==1)
{
this.Size = new Size(970, 515);
}
else
{
this.Size = new Size(698, 515);
}
而改变

你的是vs200?
你说的不起作用是什么
lsd123 2009-07-02
  • 打赏
  • 举报
回复
private void FrmMain_Load(object sender, EventArgs e)
{
ChangeSize(2);
}


private void ChangeSize(int type)
{
if(type==1)
{
this.Size = new Size(970, 515);
}
else
{
this.Size = new Size(698, 515);
}
}

这样为什么不起作用?

110,534

社区成员

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

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

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