form2,form3都分别有一个label1属性是一样Private Sub Command1_Click()
Dim lbl As Label
if combo1.text="1" then
lbl = Form2.Label1
else
lbl = Form3.Label1
end ifWith lbl
   .Caption = Combo1.Text
  ...........................................
  50多个属性在不同的两个窗口form2,form3
End WithForm2.Show
Form3.Show
End Sub如何把上面的代码改正确,因为属性太多,不可能同时两个窗口一起同时属性赋值

解决方案 »

  1.   

    不懂你的意思label最多也就是用到 text 位置 大小 颜色 样式,怎么有50多个属性?
    另外不要在窗口之间来回的调用,这样代码很混乱。
      

  2.   

    Dim lbl As Label 
    if combo1.text="1" then 
    lbl = Form2.Label1 
    else 
    lbl = Form3.Label1 
    end if 
    '混乱是你代码逻辑混乱引起的,Form2.Label1 ,Form3.Label1 都赋给lbl,然后再给lbl赋属性,本来Form3.Label1,Form2.Label1就很清楚,结果乱成一团.
      

  3.   

    是否可以考虑将Form2和Form3合并成一个Form,将其中的Label1变成Label数组
      

  4.   

    Private Sub Command1_Click()
        Dim lbl As Object
        If Combo1.Text = "1" Then
           Set lbl = Form2.Label1
        Else
           Set lbl = Form3.Label1
        End If
        
        With lbl
          .Caption = Combo1.Text
        '  ...........................................
        '50  多个属性在不同的两个窗口form2 , Form3
        End With
        
        Form2.Show
        Form3.Show
    End Sub
      

  5.   

    Private Sub Command1_Click() 
        Dim lbl As Object 
        If Combo1.Text = "1" Then 
          Set lbl = Form2.Label1 
        Else 
          Set lbl = Form3.Label1 
        End If 
        
        With lbl 
          .Caption = Combo1.Text 
        '  ........................................... 
        '50  多个属性在不同的两个窗口form2 , Form3 
        End With 
        
        Form2.Show 
        Form3.Show 
    End Sub
      

  6.   

    可能我说的不够清楚吧,说50多个属性只是夸张说法,起码一个窗口不只是有一个label还有其他控件,但是form2和form3的控件是一样的,只是这两个过程中就form2和form3的名字不相同,所以是否可以把窗口作为一个参数传入,这样把两个过程减少为一个过程,方便维护
      

  7.   

    dim frm1 as form2
    dim frm2 as form2set frm1 = new form2
    set frm2 = new form2frm1.label1.caption = "blah1"
    frm2.label1.caption = "blah2"
    ..................frm1.show
    frm2.show