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 :
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).
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
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).
Partager