| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 663 人关注过本帖
标题:问一个控件布局的问题
只看楼主 加入收藏
南川
Rank: 4
等 级:业余侠客
威 望:1
帖 子:111
专家分:235
注 册:2010-6-25
结帖率:86.21%
收藏
 问题点数:0 回复次数:7 
问一个控件布局的问题
图片附件: 游客没有浏览图片的权限,请 登录注册

做了一个用户控件,在上边放了2个label,
label1.Dock = System.Windows.Forms.DockStyle.Left;
label2.Dock = System.Windows.Forms.DockStyle.Fill;

当我调整用户控件的大小的时候,我需要达到Label1和Label2根据在用户控件的宽度比例变化,而实际的情况是:Label1始终不变化,而只有Label2随用户控件的变化而变化。请教:根据宽度比例变化的效果怎么布局?
搜索更多相关主题的帖子: 控件 
2010-11-18 21:48
c1_wangyf
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:7
帖 子:665
专家分:2832
注 册:2010-5-24
收藏
得分:0 
建议使用anchor属性试试!!可以设置为上下左右四个方向哦!!
2010-11-18 22:01
南川
Rank: 4
等 级:业余侠客
威 望:1
帖 子:111
专家分:235
注 册:2010-6-25
收藏
得分:0 
回复 2楼 c1_wangyf
这样的话,变成了Label1变,label2不变了。。。
2010-11-18 22:13
zwk199024
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:63
专家分:102
注 册:2010-9-15
收藏
得分:0 
不如在 在两个label下 放两个 panel ,再把label放上面
2010-11-18 22:14
南川
Rank: 4
等 级:业余侠客
威 望:1
帖 子:111
专家分:235
注 册:2010-6-25
收藏
得分:0 
回复 4楼 zwk199024
我试过了,也是同样的效果的
2010-11-18 22:15
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
lable1  anchor left top
lable2  anchor top right bottom

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2010-11-19 08:21
c1_wangyf
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:7
帖 子:665
专家分:2832
注 册:2010-5-24
收藏
得分:0 
两个lable你都试试anchor属性
2010-11-19 08:28
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:0 
可以考虑处理一下该控件的SizeChanged事件。
程序代码:
using System;
using System.Collections.Generic;
using using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();

            /*
             * 设置Label1
             */
            this.label1.AutoSize = false;
            this.label1.BorderStyle = BorderStyle.FixedSingle;
            this.label1.BackColor = Color.Yellow;
           
            /*
             * 设置Label2
             */
            this.label2.AutoSize = false;
            this.label2.BorderStyle = BorderStyle.Fixed3D;
            this.label2.BackColor = Color.Green;

            this.Load += new EventHandler(UserControl1_Load);
            this.SizeChanged += new EventHandler(UserControl1_SizeChanged);
        }

        private void UserControl1_Load(object sender, EventArgs e)
        {
            SetLabels();
        }

        private void UserControl1_SizeChanged(object sender, EventArgs e)
        {
            SetLabels();
        }

        private void SetLabels()
        {
            this.label2.Visible = this.label1.Visible = false;

            /*
             * 这里设置lable1和label2各占控件的3/8和5/8
             */
            int pControlWidth = this.Width;                     // 获取控件的宽度
            int PControlHeight = this.Height;                   // 获取控件的高度
            int lbl1Width = 3 * pControlWidth / 8;              // label1的宽度
            int lbl2Width = 5 * pControlWidth / 8;              // label2的宽度
            int lbl1X = 0;                                      // label1 X坐标
            int lbl2X = lbl1X + lbl1Width;                      // label2 X坐标

            this.label1.Location = new Point(lbl1X, 0);
            this.label2.Location = new Point(lbl2X, 0);
            this.label1.Size = new Size(lbl1Width, PControlHeight);
            this.label2.Size = new Size(lbl2Width, PControlHeight);

            this.label2.Visible = this.label1.Visible = true;
        }
    }
}

图片附件: 游客没有浏览图片的权限,请 登录注册

2010-11-19 09:34
快速回复:问一个控件布局的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015449 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved