WinForm里怎样用C#使Label及其里面文字的大小随窗口大小成比例进行变化?

ProsperLee 2011-10-20 01:04:30
我觉得会在窗体的Resize事件中写,但是不知道如何改变里面控件(包括自定义控件)的大小……
而且也不知道如何固定每个控件之间的相对位置关系……
这个程序是一个全屏程序,全屏的属性我在属性列表中将FormBorderStyle设为None,将WindowState设为Maximized。
目前所有的控件都在程序(屏幕)的左上角整齐地排列,现在不知道如何改变这些Label(几乎都是Label,还有一个自定义控件)的位置、大小、里面文字的大小……
...全文
3164 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-10-20
  • 打赏
  • 举报
回复
你题目中提到了自定义控件,想必你会自定义控件吧,你就用自定义控件,在自定义控件中,直接把那些算法加进去,然后由窗体调用,这样外部就不用太多的算法了,也可以提高代码的重用率。
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 mask_ll 的回复:]
你是一开始就是使用的全屏吗?
要不你在窗体的Load事件中加入那段代码。
[/Quote]
Load事件成功了……
没错,我一开始就使用全屏。我这个是一个全屏显示程序……
不过每一个Label的布局出了问题……
有没有能把多个已经排列好的Label当做一个整体进行调整的?还是得把Label一个个地改啊……
「已注销」 2011-10-20
  • 打赏
  • 举报
回复
你是一开始就是使用的全屏吗?
要不你在窗体的Load事件中加入那段代码。
「已注销」 2011-10-20
  • 打赏
  • 举报
回复
我写错了,Location属性才是使用Point,Size属性使用的是Size,我是直接写的,没有环境,所以没法调试,你应该会写了吧
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mask_ll 的回复:]
C# code

private void frmStatistics_SizeChanged(object sender, EventArgs e)
{
this.lblSpecialText.Size = new Point(821 + move_l,this.lblSpecialText.Height);
}
……
[/Quote]
改成了这样

Point PlblSpecialText = new Point(821 + move_w + 228 + move_h);
this.lblSpecialText.Size = new Size(PlblSpecialText);

就没有语法错误了……


不过还是没有作用,label依然没变化。我把FormBorderStyle改成Sizable,动了窗体的大小,倒是大小变了,只是变不回去了……不过这个可以不用考虑。
但我这个是FormBorderStyle为None的全屏程序……要在不同分辨率下的屏幕中全屏显示,并自动调整label的Size与Location……

static int move_w;
static int move_h;

是针对当前屏幕分辨率的宽和高的两个偏移量……倒是找到了,不知道如何利用这两个偏移量修改Size与Location……
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mask_ll 的回复:]
C# code

private void frmStatistics_SizeChanged(object sender, EventArgs e)
{
this.lblSpecialText.Size = new Point(821 + move_l,this.lblSpecialText.Height);
}
……
[/Quote]

错误 2 无法将类型“System.Drawing.Point”隐式转换为“System.Drawing.Size”。存在一个显式转换(是否缺少强制转换?) E:\三点照合\2011-7-new\Source\CS_Source\显示屏程序\FS0501\FS0501\frmStatistics.cs 123 40 FS0501



怎么办?
「已注销」 2011-10-20
  • 打赏
  • 举报
回复

private void frmStatistics_SizeChanged(object sender, EventArgs e)
{
this.lblSpecialText.Size = new Point(821 + move_l,this.lblSpecialText.Height);
}

看看这个
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 mask_ll 的回复:]
在窗体的SizeChanged事件中进行计算,设置控件的Location和Size就可以了。
[/Quote]

private void frmStatistics_SizeChanged(object sender, EventArgs e)
{
this.lblSpecialText.Width = 821 + move_l;
this.Refresh();
}

没反应……
「已注销」 2011-10-20
  • 打赏
  • 举报
回复
在窗体的SizeChanged事件中进行计算,设置控件的Location和Size就可以了。
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dam520 的回复:]
Softgroup NetResize就可以帮你搞定了,唯一不爽的我用了devexpress控件,放大后界面有些惨不忍睹
[/Quote]
Softgroup NetResize是什么啊……没听说过……能说具体点么?
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 luqing200862 的回复:]
跟你一样的问题,见:
http://topic.csdn.net/u/20111017/16/ec9ceb3a-3edb-4590-90ea-4f72c29b79b1.html
[/Quote]
“不要跟我说什么Anchor属性 Dock属性设置,不是那类问题!~ 网上已经看过多方资料,未看到实用的办法!”很多人的心声……
dam520 2011-10-20
  • 打赏
  • 举报
回复
Softgroup NetResize就可以帮你搞定了,唯一不爽的我用了devexpress控件,放大后界面有些惨不忍睹
luqing200862 2011-10-20
  • 打赏
  • 举报
回复
跟你一样的问题,见:
http://topic.csdn.net/u/20111017/16/ec9ceb3a-3edb-4590-90ea-4f72c29b79b1.html
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dongxinxi 的回复:]
Location默认是相对于父容器控件左上角的位置,如果超过左上边界将为负数
[/Quote]
要更改窗体里的Label……
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 keenweiwei 的回复:]
选中你那个 label,F4调出属性窗口,找到 Dock,然后一个个试------
[/Quote]
DOCK属性是靠在一个边上或fill在整个窗体里……我的窗体是30个Label像表格一样整齐地排列……估计用DOCK属性不合适……
  • 打赏
  • 举报
回复
Location默认是相对于父容器控件左上角的位置,如果超过左上边界将为负数
  • 打赏
  • 举报
回复
大小设置控件(窗口)Width和Height
位置设置Location属性
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
我的窗口是一个FormBorderStyle设为None、要全屏在宽为Width、高为Height的屏幕上的程序……
ijwsoft 2011-10-20
  • 打赏
  • 举报
回复
选中你那个 label,F4调出属性窗口,找到 Dock,然后一个个试------
ProsperLee 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangyong0921 的回复:]
1. 设置Dock属性
2. 在OnResize函数里面重新计算位置,设置Localsize和Size属性
[/Quote]
[Quote=引用 2 楼 return_false 的回复:]
你可以设置控件DOCK属性值,来自适应大小
[/Quote]
DOCK属性值怎么设啊……是一个布局按钮……没用过……
加载更多回复(2)

111,093

社区成员

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

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

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