Bonjour a tous,
Je suis en train de faire une petite application pour PDA (windows mobile pocket 2002) utilisant le Compact Framework.
J'ai trouve un code interessant pour la creation en cascade de plusieurs textbox (je precise que je debute en VB...).

Du coup je me suis dit que ce serait une bonne idee de gerer la creation de mon formulaire a travers ce code.
Voici ce que j'ai pour le moment .

Donc en Windows Forms normal tout va bien, je peux faire cela facilement, par contre avec le compact Framework, il me manque la propriete "Name" de "Control".
Donc je suis dans l'impossibilite de savoir quel textbox m'envoie cette action.

J'ai cependant un debut de code qui fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
    Private Sub frmEntrada_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Creation de ma liste de champs
        Dim listaCampos() As String = {"Cliente", "CEDIS", "Operacion", "Cli. Final", "CAC", "Transp."}
 
        Dim i As Integer
        Dim tbx As TextBox
        Dim lbl As Label
        Dim y As Integer = 0
 
        For i = 0 To listaCampos.Length - 1
            'Insercion del label
            lbl = New Label
            lbl.Size = New Size(56, 20)
            lbl.Text = listaCampos(i)
            lbl.Location = New Point(0, y + 2)
            Me.tbpDatos.Controls.Add(lbl)
 
            'Insercion del TextBox ID
            tbx = New TextBox
            tbx.Size = New Size(36, 20)
            tbx.Location = New Point(56, y)
            AddHandler tbx.KeyDown, AddressOf Me.GroupTbKeyDown
            Me.tbpDatos.Controls.Add(tbx)
 
            'Insercion del TextBox Nombre
            tbx = New TextBox
            tbx.Size = New Size(146, 20)
            tbx.Location = New Point(92, y)
            AddHandler tbx.KeyDown, AddressOf Me.GroupTbKeyDown
            Me.tbpDatos.Controls.Add(tbx)
            y += 18
        Next
 
    End Sub
 
    Private Sub GroupTbKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
        If e.KeyCode = Keys.F9 Then
            'Recuperation d'un DataSet par WebService
            Dim oWS As New LogisWs.CatalogosLogis
            Dim oDS As DataTable
            'recuperacion de la tabla del WebService
            oDS = oWS.GetClientes(Me.tbpDatos.Controls(0).Text, "").Tables("catalogo")
 
            Dim lv As New frmListValues
            lv.dgListValues.DataSource = oDS.DefaultView
 
            lv.ShowDialog()
            'Recuperation des donnees dans mes textbox
            CType(sender, Control).Text = lv.dgListValues(lv.dgListValues.CurrentRowIndex, 0)
 
            lv.Dispose()
 
        End If
 
    End Sub
Donc au final, la ligne "CType(sender, Control).Text = lv.dgListValues(lv.dgListValues.CurrentRowIndex, 0)" va realiser le travail que je souhaite : mettre la valeur de la colonne 0 dans le textbox qui a realise l'appel (suite a l'appui sur F9).

Du coup j'ai qques questions :
1. Cet appel peut etre fait sur le 1er (representant un ID) ou le 2nd (representant le nom)textbox (d'une meme ligne), du coup je ne sais pas comment faire pour que la 1ere col de ma liste de valeurs aille dans mon 1er textbox et la 2nde dans le 2eme ?
Je pensais sinon utiliser un caractere separateur genre "|" mais ca me semble deroutant pour l'utilisateur qui est habitue au systeme ID/Nom dans 2 textbox differentes.

2. Ai-je fais le bon choix de creer ma liste de textbox ainsi ? Y aurait-il une meilleure facon ?

3. Est-ce deroutant comme facon de programmer (qd on ouvre mon formulaire en design, il apparait vide). Devrai-je le creer graphiquement (meme si le pb reste entier car dans mon code je ne pourrai pas acceder au nom de mes textbox).