none
我怎么才能让用户控件随着窗体的大小的改变而改变呢 RRS feed

  • 问题

  • 我怎么才能让用户控件随着窗体的大小的改变而改变呢?用户控件里的控件的位置可以不变!应该用窗体的什么事件? 用什么语句空值用户控件的大小? 如果要用户控件与它里面的控件比例保持不变,该怎么写代码?谢谢啦!
    2010年5月24日 7:46

答案

  • 只要设置此用户控件的 Anchor 属性,默认值为 Top 和 Left,设置为 Top Left Bottom Right 即可

    此属性支持所有控件,不仅仅是 usercontrol


    问题要简单,错误须详细@错误/异常/堆栈信息+操作系统+软件版本+all the context of the issue Hope Helpful | http://www.leoworks.net

    2010年5月24日 7:53
  • 补充一点 设置Dock属性也是可以的 比如Fill Top Bottom 等等
    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年5月24日 8:09
    版主
  • 你好!

         可以先尝试Anchor和Dock属性,如果无法满足需求,可以使用FlowLayoutPanel类来自己定义布局!

         希望对你有帮助!


    周雪峰
    2010年5月24日 14:19
    版主

全部回复

  • 只要设置此用户控件的 Anchor 属性,默认值为 Top 和 Left,设置为 Top Left Bottom Right 即可

    此属性支持所有控件,不仅仅是 usercontrol


    问题要简单,错误须详细@错误/异常/堆栈信息+操作系统+软件版本+all the context of the issue Hope Helpful | http://www.leoworks.net

    2010年5月24日 7:53
  • 补充一点 设置Dock属性也是可以的 比如Fill Top Bottom 等等
    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年5月24日 8:09
    版主
  • 你好!

         可以先尝试Anchor和Dock属性,如果无法满足需求,可以使用FlowLayoutPanel类来自己定义布局!

         希望对你有帮助!


    周雪峰
    2010年5月24日 14:19
    版主
  • GeRenMingPian g = new GeRenMingPian(c);
                        g.Dock = DockStyle.Right;
                        g.Anchor = AnchorStyles.Right;
                        g.Parent = this.flowLayoutPanel1;

    没起作用啊? 看我写的对吗?

    2010年5月25日 1:03
  • Dock和Anchor属性设置一个就行了 要么设置Dock要么设置Anchor,同时设置那么起作用的是最好一个设置的

    GeRenMingPian g = new GeRenMingPian(c);
                        g.Dock = DockStyle.Right;
                        //g.Anchor = AnchorStyles.Right;
                        g.Parent = this.flowLayoutPanel1;


    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年5月25日 1:32
    版主
  • 我按你说的做了 但这样 GeRenMingPian 这个用户控件一闪就消失了 

    2010年5月25日 1:54
  • 你好 一闪就消失了 我想跟Dock属性没有关系 应该是你代码有问题

    能否将其完整代码粘贴出来


    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年5月25日 1:57
    版主
  • form1窗体load事件里

     string sql = string.Format("select * from kehu where Name like '%{0}%'", name);
                    List<KeHu> list = KeHuManager.GetKehusBySql(sql) as List<KeHu>;
                    foreach (var c in list)
                    {
                        GeRenMingPian g = new GeRenMingPian(c);
                       // g.Dock = DockStyle.Right;
                       g.Anchor = AnchorStyles.Right;
                        l.Add(g);
                        g.Parent = this.flowLayoutPanel1;
                     
                      
                    }
    其他都是无关代码 强调一下 GeRenMingPian 是用户控件 

     

    下面是另一个解决办法

     

    form1窗体load事件里

     string sql = string.Format("select * from kehu where Name like '%{0}%'", name);
                    List<KeHu> list = KeHuManager.GetKehusBySql(sql) as List<KeHu>;
                    foreach (var c in list)
                    {
                        GeRenMingPian g = new GeRenMingPian(c);
                       // g.Dock = DockStyle.Right;
                       g.Anchor = AnchorStyles.Right;
                        l.Add(g);
                        g.Parent = this.flowLayoutPanel1;
                     
                      
                    }
    还有

    private void Form1_Resize(object sender, EventArgs e)
            {
               
                foreach(  GeRenMingPian g in l )
                {
                    g.Width = this.Width;
                }
            }

    这个也没成功啊

    哪里不对呢?

    2010年5月25日 9:17
  • 为上面补充

      List<GeRenMingPian> l = new List<GeRenMingPian>(); 有这么一个集合

     

    2010年5月25日 9:19
  • 你好!

         你尝试新建一个窗体,然后测试,这样可以排除其他代码的干扰!


    周雪峰
    2010年5月25日 9:49
    版主