明明是写了 控件3.height=控件1.height+控件2.height, 跟踪调试也运行了这句,可是控件3的高度依然不变,不等于后面的两个控件的高度之和!    有欲哭无泪的感觉.

解决方案 »

  1.   

    1.height+控件2.height=?
    会不会有什么问题
      

  2.   

    kmzs(.:RNPA:.山水岿濛),感谢关注。    这是我的一个自定义控件,我想让它在运行时完整显示它所包含的内容,可是,运行后,它的高度依然等于text1的高度.    应该没有什么别的事件影响了。    一个星期前还能得到预期的结果,放了一个星期,干完别的事情再回来,现在,运行的结果就面目全非了。不仅是高度,子控件的宽度也不对了。Private Sub UserControl_Resize()    If Ambient.UserMode = False Then
            UserControl.Height = Text1.Height
            Text1.Width = UserControl.Width - Command1.Width
            Command1.Left = Text1.Width
          Else
            UserControl.Height = List1.Top + List1.Height     '这一句,执行后,usercontrol.height的高度没有改变。
            UserControl.Width = IIf(List1.Width > Text1.Width + Command1.Width, List1.Width, Text1.Width + Command1.Width)
        End If
        
    End Sub
      

  3.   

    kmzs(.:RNPA:.山水岿濛),感谢关注。    这是我的一个自定义控件,我想让它在运行时完整显示它所包含的内容,可是,运行后,它的高度依然等于text1的高度.    应该没有什么别的事件影响了。    一个星期前还能得到预期的结果,放了一个星期,干完别的事情再回来,现在,运行的结果就面目全非了。不仅是高度,子控件的宽度也不对了。Private Sub UserControl_Resize()    If Ambient.UserMode = False Then
            UserControl.Height = Text1.Height
            Text1.Width = UserControl.Width - Command1.Width
            Command1.Left = Text1.Width
          Else
            UserControl.Height = List1.Top + List1.Height     '这一句,执行后,usercontrol.height的高度没有改变。
            UserControl.Width = IIf(List1.Width > Text1.Width + Command1.Width, List1.Width, Text1.Width + Command1.Width)
        End If
        
    End Sub
      

  4.   

    minajo21(大眼睛): 那你是怎样解决的呢?
      

  5.   

    aa=1.height+控件2.height
    msgbox aa
    看一下AA有没有变
      

  6.   

    aa=1.height+控件2.height
    msgbox aa
    检测一下AA是否会变
      

  7.   

    我觉得是你把各个控件的关系搞混了,比如UserControl和list1是同时处在form上,还是它们分别在不同的容器上,如果是这样,肯定导致你达不到效果!仅供参考!!!
      

  8.   

    guoyx(guoyx) :list1是UserControl中的一个子控件。
      

  9.   

    试试这样
    Private Sub Form_Load()
        UserControl11.Width = 100
        Debug.Print "Form_Load", UserControl11.Height
    End Sub
      

  10.   

    多加几个 msgbox、debug.print 检查一下不行么?
      

  11.   

    可能因为各个控件的ScaleMode值不一致所引起
    Private Sub UserControl_Resize()
       ScaleMode = 3 '加上这行试一试
        If Ambient.UserMode = False Then
            UserControl.Height = Text1.Height
            Text1.Width = UserControl.Width - Command1.Width
            Command1.Left = Text1.Width
          Else
            UserControl.Height = List1.Top + List1.Height     '这一句,执行后,usercontrol.height的高度没有改变。
            UserControl.Width = IIf(List1.Width > Text1.Width + Command1.Width, List1.Width, Text1.Width + Command1.Width)
        End If
        
    End Sub
      

  12.   

    ehais(海阔但钱包不空):试过了,不行。谢谢回贴。
      

  13.   

    试一下是可以用一个全局变量来过度一下,我怀疑可能你的控件相关产生死循环了,
    具体是在确定List1控件没受UserControl的属性映响也就是没有关连时
    Public SizeChange=List1.Top + List1.Height  
       
    后在 UserControl_Resize() 中将
    UserControl.Height = List1.Top + List1.Height   
    改为  UserControl.Height =SizeChange
    试一下
      

  14.   

    victorycyz(中海,干活去,别在CSDN玩耍!) :list1是UserControl中的一个子控件。
    这就对了,list1的top是由usercontrol决定的,你usercontrol的高度又由list1得到,什么逻辑????
      

  15.   

    发此贴本来是想发一发牢骚,所以,只放了一分。没想到这么多热心的朋友来给我指点。太感谢了,现在,专门发了一个此问题的贴子,请有兴趣的朋友再来捧个场,来者都有分。http://expert.csdn.net/Expert/topic/2272/2272533.xml?temp=.6750299
      

  16.   

    看看你的那个控件其它的属性设置:是不是不允许改变高度!  你将控件1.height =5000(或任意数字),看是不是不变,如果不变,则表示在自定义时就已经出问题了!不是现在的问题!
      

  17.   

    你用的是Textbox?那么要么修改字体大小,要么用多行,单行时行高总是怪怪的
    UserControl.Height = List1.Top + List1.Height     
    这会造成循环引用?
    List1
    莫名
      

  18.   

    用vb的运行即时监视看看各个变量都在干什么控件3.height=控件1.height+控件2.height问题可能不在公式上,也有可能来自1或2任何一个变量。
      

  19.   

    建议加一句 Me.caption=控件1.height+控件2.height,Try