如何实现控件随对话框大小变化而自动调整大小和位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现控件随对话框大小变化而自动调整大小和位置相关的知识,希望对你有一定的参考价值。

是文档视图啊,要是Dialog倒有个现成的类库可以使用
http://www.codeproject.com/Articles/568/CResizableDialog

要是不能直接使用,修改修改应该也可以,FormView嘛

有时候就那样,宽带高度会是0的,特别在刚开始创建显示控件的时候

我直接来了个 if (0 == width) return; if (0 == height) return;
或者 if ((width < 10) || (height < 10)) return; 不干活,窗口不可能一直是那么小,所以可视区域那么小的话,索性什么都不干好了,歪道,你且看给有能解决的吧

反正我在C#中,自绘控件,会碰到这种情况,也是想根据控件宽高度,计算绘图位置和大小的

语言只是编程语言,但是控件是系统控件的,这个应该不是语言的问题
参考技术A 在对话框的OnSizing消息响应函数中,获取各个控件的大小和位置,然后进行等比例变换,每次变换此前都要保存对话框之前的尺寸,这样才能计算放大比例。

NGUI如何让uilabel框大小随文字增加而变化

NGUI的UILabel自带四种显示模式,如图,Overflow 下拉列表中 表示文本的显示模式。

Shrink Content表示挤压式,限定了lable的width跟height,文本只能再这个范围之内显示,一旦所有的文本总大小超过这个范围,统一进行缩放。

Clamp Content 表示裁剪,同样以这width, 超出部分直接裁切,不进行显示。但是其实文本还在,只是不进行显示而已。将label的width加大,还是会显示处理的。

Resize Free 则简单的多,只要你添加文本,它就会跟着自动变化。不过如果你不在文本中添加换行的话,它不会自动给你换行,因此,需要自己注意文本的范围,适当的添加换行符。需要注意的是在这种模式下,无法手动调整label的width跟height。

Resize Height 则是对ResizeFree模式的一种调整。这种模式下,我们无法修改Label的height,只能定义width。我们只需要定义好width,然后添加文本,label会自动调整height进行匹配

你需要UIlabe的框随文字增加而变化,可以选择后两种也就是Resize Free跟Resize Height。

参考技术A 可以尝试在文字之前输入颜色的编码就好。 "[FF0099]"+信息 +"[000000]" 这样信息的颜色就是粉色,而信息之后的颜色是黑色了。

以上是关于如何实现控件随对话框大小变化而自动调整大小和位置的主要内容,如果未能解决你的问题,请参考以下文章

c# winform groupbox上动态生成的控件,如何让控件随着分辨率变化而自动调整位置和大小

C#控件的位置和大小随窗体大小的变化而变化

C#,实现窗口大小改变时窗口内的控件自动调整位置和大小时,groupbox内的控件为啥不自动调整

WinForm开发中实现控件随窗体大小的改变而自动适应其改变

C#,实现窗口大小改变时窗口内的控件自动调整位置和大小时,groupbox内的控件为啥不自动调整??求解

vb中如何使窗体和控件的相对位置不发生改变