2009-05-21 3 views
0

동적 런타임 컨트롤에 문제가 있습니다.내가 현재 가지고있는 컨트롤을 확인할 수있는 방법 (vb.net cf)

폼에 표시 할 레코드 당 컨트롤 그룹을 만듭니다.

레코드 ID를 각 컨트롤의 태그로 추가하여 해당 컨트롤이 속한 레코드를 식별합니다. SetContactNumber에서

While rCONT.Read 
    Dim txtphome As New TextBox 
    txtphome.Name = "phone" + rCONT.Item("pcontID").ToString 
    txtphome.Text = rCONT.Item("pcontPhHome").ToString 
    txtphome.Tag = rCONT.Item("pcontID").ToString 
    tcPatientDetails.TabPages(2).Controls.Add(txtphome) 
     AddHandler txtphome.LostFocus, AddressOf SaveContactChange 
     AddHandler txtphome.GotFocus, AddressOf SetContactNumber 
End While 

나는 어떻게 그것을

답변

4

의이 SetContactNumber 이벤트가 정의되어 있다고 가정 해 봅시다 발생시킨 컨트롤을 식별 할 수있는 태그 값을 저장하려면 같은 :

C#

private void SetContactNumber(object sender, EventArgs e) 
    { 
     //Stuff that happens when the SetContactNumber event is raised... 
    } 

VB

Private sub SetContactNumber(sender As object, e As EventArgs) 
     //Stuff that happens when the SetContactNumber event is raised 
    End Sub 

보낸 사람 매개 변수는 이벤트를 발생시킨 개체입니다. 태그 속성 유형 객체의 값을 취

CType(sender, textbox).tag = "Whatever you wanted to put in here" 

((textbox)sender).tag = "Whatever you wanted to put in here"; 

VB를

C 번호 : 그래서 당신은 그냥 캐스팅 태그에 값을 연결해야 , 그래서 할당 된 값은 문자열, 객체, 클래스의 인스턴스 등 당신이 좋아하는 것일 수 있습니다. 여러분이 pullin 할 때 그 객체를 던져 넣는 것은 여러분의 책임입니다 그래도 그것을 사용하려면 태그 속성 밖으로 g.

이렇게 모두 넣으면 이벤트를 발생시킨 개체를 가져 와서 텍스트 상자로 캐스팅하고 지정한 값을 태그 속성에 덤프합니다.

C 번호

private void SetContactNumber(object sender, EventArgs e) 
    { 
     textbox thisTextbox = (textbox)sender; 
     thisTextbox.tag = "Whatever you wanted to put in here"; 
    } 

VB

Private Sub SetContactNumber(sender As Object, e As EventArgs) 
     Dim thisTextbox As TextBox = CType(sender, Textbox) 
     thisTextbox.tag = "Whatever you wanted to put in here" 
    End Sub 
+0

+1; 좋은 설명. 하지만 그는 루프에서 태그를 할당하고 이벤트 처리기에서 태그를 사용하고 싶다는 인상을 받았습니다 (그러나 명확하지 않았습니다). –

+0

* * 다소 불명확했다 ... 그리고 그 직후, 나는 C#으로 모든 예제를 썼다는 것을 깨달았다. 그리고 그는 VB를 원했다. – BenAlabaster

관련 문제