2

私のコード:

Rs.Open("Select * From Notifications",Con)
If Not Rs.EOF Then
   For i=0 to Rs.RecordCount -1
     Dim Label As New Label
     With Label
        .Name = String.Format("Label_{0}",Rs("Id").Value.ToString)
        .Text = Rs("Notification").Value.ToString
     End With
     If Not Panel.Controls.Contains(Label) Then
        Panel.Control.Add(Label)
     End If
     Rs.MoveNext()
   Next
End If

ただし、これにより常にパネルに制御が追加され、次のコード行が正しく実行されません。 (If Not Panel.Controls.Contains(Label) Then)

このコードはタイマーで動作します。

4

2 に答える 2

4
Function CntrlExistsIn(ctrlName as String, parent as Control) as Boolean
    Dim bResult as Boolean = False

    For Each elem as Control In parent.Controls
        If elem.Name = ctrlName Then
            bResult = True
            Exit For
        End If
    Next

    Return bResult
End Function

上記の関数は、control(label)がPanelに存在するかどうかを確認するためのものです。

于 2013-01-23T10:12:55.393 に答える
1

以下のようにコードを減らす別の方法があります

 If panel1.Controls.Find(Label.Name, True).Length = 0 Then
    panel1.Control.Add(Label)
 End If  

Controls.Find(controlName、True / False)------ True / Falseは、指定されたコントロールの子コントロールをチェックインするためのものです

于 2013-01-23T11:13:29.427 に答える