2012-11-19 2 views
0

화면에 44 개의 텍스트 상자가 있습니다 (정확히 말하면 RadNumericTextBoxes이지만 밀접하지는 않습니다). 이들은 프로그래밍 방식으로 복제 할 수없는 일반적인 명명 패턴 (rntb_ [NameOfDBField])을 따릅니다.비 순차적으로 이름이 지정된 텍스트 상자를 반복합니다.

^= rntb_? 이름을 가진 각 컨트롤에 대해 .ValueNothing으로 설정하려면 어떻게해야합니까? 나는 다음을 시도했다 :

Private Sub ClearValues() 
    For Each c as Control in Controls 
     If TypeOf c Is RadNumericTextBox Then 
      TryCast(c, RadNumericTextBox).Value = Nothing 
     End If 
    Next 
End Sub 

그러나 Controls.Count = 1과 마스터 페이지의 이름 만 포함한다.

컨트롤에 인수를 전달해야합니까, 아니면 다른 작업을해야합니까? 그것은 "유일한"44 텍스트 상자 그래서 나는 수동으로 각각을 지울 수 있지만 오히려 가능하면 프로그래밍 방식으로하고 싶습니다. 그들이에있는 경우 RadNumericTextBoxes이 양식에 아닌 컨테이너에있는 경우

답변

1

,

Private Sub ClearValues() 
    For Each c As Control In Me.Controls 
     If TypeOf c Is RadNumericTextBox Then 
      Dim rntb = DirectCast(c, RadNumericTextBox) 
      If rntb.Name.StartsWith("rntb_") Then 
       rntb.Value = Nothing 
      End If 
     End If 
    Next 
End Sub 

의 라인을 따라 무언가는하지만, 말, GroupBox1은 당신은 GroupBox1.Controls으로 위의 Me.Controls을 대체 할 것이다.

코드에 End For은 무엇입니까? For..Next 루프는 VB.NET의 본문 끝에 Next이 있습니다.

+0

죄송합니다. 오타가있었습니다 (직접 복사 및 붙여 넣기가 아닙니다). 나는 그것을 바로 잡았다. 당신의 예제는 똑같은 것을 반환하고, Me.Controls.Count = 1 –

+0

@pcopley RNTB는 GroupBox 나 패널 같은 컨테이너 컨트롤 안에 있습니까? someControl.Controls는 someControl의 직접 자손 컨트롤 만 반환합니다. –

관련 문제