C# 窗口应用程序界面拉伸

对于C#写的窗口应用程序,会出现拉伸要放大的情况,但是拉伸之后 组件的大小以及位置都不会改变,这些有点难了

对于上述的问题,觉得有两种解决办法。

1.设置所写的窗口应用程序不可拉伸(固定大小)

即固定住窗口应用程序的大小

在组件form的属性中修改为  FormBorderStyle为None、Fixed3D、FixedDialog或者FixedToolWindow即可,这样就可以固定住界面,不会被拉伸变换。

补充一下:FormBorderStyle各项含义如下:
Fixed3D:固定的三维边框。
FixedDialog:固定的对话框样式的粗边框。
FixedSingle:固定的单行边框。
FixedToolWindow:不可调整大小的工具窗口边框。工具窗口不会显示在任务栏中也不会显示在当用户按 Alt+Tab 时出现的窗口中。尽管指定 FixedToolWindow 的窗体通常不显示在任务栏中,还是必须确保 ShowInTaskbar 属性设置为 false,因为其默认值为 true。
None:无边框。
Sizable:可调整大小的边框。
SizableToolWindow:可调整大小的工具窗口边框。工具窗口不会显示在任务栏中也不会显示在当用户按 Alt+Tab 时出现的窗口中。

2.界面中的控件等比例拉伸放大缩小

 首先要把组件form的属性中修改为  FormBorderStyle为Sizable或者SizableToolWindow

代码如下:

public Form1()
        {
            InitializeComponent();//初始化组件
            System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
            x = this.Width;//初始化时候的界面宽度
            y = this.Height;//初始化时候的界面高度
            setTag(this);
        }
        private float x;//定义当前窗体的宽度
        private float y;//定义当前窗体的高度
        
        //拖动页面操作
        private void Form1_Resize(object sender, EventArgs e)
        {
            float newx = (this.Width) / x;//拖动界面之后的宽度与之前界面的宽度之比
            float newy = (this.Height) / y;//拖动界面之后的高度与之前界面的高度之比
            setControls(newx, newy, this);//进行控件大小的伸缩变换
        }
 
        private void setTag(Control cons)
        {
            foreach (Control con in cons.Controls)
            {
                con.Tag = con.Width + ";" + con.Height + ";" + con.Left + ";" + con.Top + ";" + con.Font.Size;
                if (con.Controls.Count > 0)
                {
                    setTag(con);
                }
            }
        }
        //用来拉伸界面中的组件
        private void setControls(float newx, float newy, Control cons)
        {
            //遍历窗体中的控件,重新设置控件的值
            foreach (Control con in cons.Controls)
            {
                //获取控件的Tag属性值,并分割后存储字符串数组
                if (con.Tag != null)
                {
                    string[] mytag = con.Tag.ToString().Split(new char[] { ';' });
                    //根据窗体缩放的比例确定控件的值
                    con.Width = Convert.ToInt32(System.Convert.ToSingle(mytag[0]) * newx);//宽度
                    con.Height = Convert.ToInt32(System.Convert.ToSingle(mytag[1]) * newy);//高度
                    con.Left = Convert.ToInt32(System.Convert.ToSingle(mytag[2]) * newx);//左边距
                    con.Top = Convert.ToInt32(System.Convert.ToSingle(mytag[3]) * newy);//顶边距
                    Single currentSize = System.Convert.ToSingle(mytag[4]) * newy;//字体大小
                    con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
                    if (con.Controls.Count > 0)
                    {
                        setControls(newx, newy, con);
                    }
                }
            }
        }

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 窗体界面设计....... 1 1.1 菜单应用实例...... 2 实例001 带历史信息的菜单...... 2 实例002 菜单动态合并...... 3 实例003 像开始菜单一样漂亮的菜单...... 4 实例004 任务栏托盘菜单...... 5 实例005 可以拉伸的菜单界面...... 5 实例006 菜级联菜单...... 7 1.2 工具栏设计...... 7 实例007 带背景的工具栏...... 7 实例008 浮动工具栏...... 8 实例009 带下拉菜单的工具栏...... 9 实例010 具有提示功能的工具栏...... 9 1.3 状态栏设计...... 10 实例011 在状态栏中显示检查框...... 10 实例012 带进度条的状态栏...... 11 实例013 状态栏中加入图标...... 12 1.4 导航菜单界面...... 12 实例014 OutLook界面...... 12 实例015 带导航菜单的主界面...... 14 实例016 图形化的导航界面...... 15 1.5 特色程序界面...... 17 实例017 类QQ的程序界面...... 17 实例018 类似Windows Xp的程序界面...... 18 实例019 以图形按钮显示的界面...... 20 实例020 以树形显示的程序界面...... 21 实例021 动态按钮的窗体界面...... 22 1.6 特殊形状的窗体...... 24 实例022 非矩形窗体...... 24 实例023 建立字体形状窗体...... 25 实例024 控件随窗体自动调整...... 26 实例025 带分隔栏的窗体...... 27 实例026 随机更换主界面背景...... 27 1.7 多媒体光盘...... 28 实例027 自动启动的多媒体光盘程序...... 28 实例028 为触摸屏程序添加虚拟键盘...... 29 1.8 窗体效果...... 30 实例029 半透明渐显窗体...... 31 实例030 窗口颜色的渐变...... 32 1.9 窗体动画...... 33 实例031 窗体中的滚动字幕...... 33 实例032 动画显示窗体...... 34 实例033 制作闪烁的窗体...... 35 实例034 直接在窗体上绘图...... 37 实例035 动画形式的程序界面...... 38 1.10 标题栏窗体...... 39 实例036 使窗体标题栏文字右对齐...... 39 实例037 没有标题栏但可以改变大小的窗口...... 39 1.11 设置窗体位置...... 40 实例038 设置窗体在屏幕中的位置...... 40 实例039 始终在最上面的窗体...... 41 1.12 设置窗体大小...... 42 实例040 限制窗体大小...... 42 实例041 获取桌面大小...... 42 实例042 在窗口间移动按钮...... 43 实例043 如何实现Office助手...... 44 1.13 窗体控制技术...... 45 实例044 在关闭窗口前加入确认对话框...... 45 实例045 使用任意组件拖动窗体...... 46 实例046 修改提示字体及颜色...... 47 1.14 其他技术...... 48 实例047 如何为MDI类型窗体设置背景图片...... 48 实例048 向提示框中添加图标...... 49 第2章 控件应用....... 51 2.1 TextBox控件应用...... 52 实例049 只允许输入数字的TextBox控件...... 52 实例050 限制用户名称长度及设置密码文本...... 54 实例051 自动删除非法字符...... 55 实例052 为TextBox控件添加列表选择框...... 57 2.2 Button控件应用...... 58 实例053 在Button按钮中显示图标...... 58 2.3 ComboBox控件应用...... 59 实例054 将数据表中的字段添加到ComboBox控件...... 59 实例055 带查询功能的ComboBox控件...... 61 2.4 RichTextBox控件应用...... 63 实例056 利用RichTextBox控件实现文档管理功能...... 63 等等 共有近500个实例,来帮助你强化C#的学习

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值