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 

送信者パラメータは、イベントを発生させたオブジェクトです。だからそれをキャストして、タグに値を添付する必要があります。

C#

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

VB

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

タグプロパティは、タイプオブジェクトの値をとりますしたがって、割り当てられる値は、文字列、オブジェクト、クラスのインスタンスなど好きなものになります。あなたがプルインしているときにそのオブジェクトをキャストすることはあなたの責任ですそれを使ってタグプロパティの外に出してください。

これをまとめると、イベントを発生させたオブジェクトがプルされ、テキストボックスとしてキャストされ、指定した値がタグプロパティにダンプされます。

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

関連する問題