OVH Cloud OVH Cloud

Equivalent eval en VB.net ?

10 réponses
Avatar
Yan
Bonjour à tous,

J'aimerai savoir s'il existe un équivalent à la fonction eval() en VB.net
(version VB 2002).

Par exemple :
For i = 0 To 2
Dim lbl_test As Label = New Label()
lbl_test.Name = "lbl_test_" & i
lbl_test.Text = "Texte n° " & i
Next

Dim numero As Integer = 1
eval("lbl_test_" & numero).text = "Stop"

Merci d'avance pour votre aide,
Yan

10 réponses

Avatar
Patrice
Le plus simple et le plus performant serait d'utiliser un tableau de
Label...

--
Patrice

"Yan" a écrit dans le message de news:
%
Bonjour à tous,

J'aimerai savoir s'il existe un équivalent à la fonction eval() en VB.net
(version VB 2002).

Par exemple :
For i = 0 To 2
Dim lbl_test As Label = New Label()
lbl_test.Name = "lbl_test_" & i
lbl_test.Text = "Texte n° " & i
Next

Dim numero As Integer = 1
eval("lbl_test_" & numero).text = "Stop"

Merci d'avance pour votre aide,
Yan



Avatar
Fred
Dans : news:%,
Patrice disait :
Le plus simple et le plus performant serait d'utiliser un tableau de
Label...



Bonjour,

Ou bien, une fois les nouveaux contrôles ajoutés dans un container (ce
que je ne vois pas ici ?), utiliser la propriétés Controls du container
en question. Cette collection permet un accès à chaque contrôle enfant
par un index ou son nom.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Yan
Bonjour,

Merci pour votre réponse, je ne sais pas ce qu'est un tableau de Label,
auriez-vous un exemple à me communiquer ?

Merci encore,
Yan

---------------------------------
"Patrice" a écrit dans le message de news:
%
Le plus simple et le plus performant serait d'utiliser un tableau de
Label...

--
Patrice

"Yan" a écrit dans le message de news:
%
Bonjour à tous,

J'aimerai savoir s'il existe un équivalent à la fonction eval() en VB.net
(version VB 2002).

Par exemple :
For i = 0 To 2
Dim lbl_test As Label = New Label()
lbl_test.Name = "lbl_test_" & i
lbl_test.Text = "Texte n° " & i
Next

Dim numero As Integer = 1
eval("lbl_test_" & numero).text = "Stop"

Merci d'avance pour votre aide,
Yan







Avatar
Yan
Bonjour,

Merci pour votre réponse.
En fait, j'ai simplifié mon exemple, et mes labels sont générés dans un
panel.

Ce que vous me suggérez, c'est quelque chose du genre :
pnl_liste.Controls(numero).text = "Stop"


Mais si le panel contient un mélange de contrôles cela m'obligerais à faire
quelque chose du style (dans une boucle) :
If pnl_liste.Controls(numero).GetType().ToString =
"System.Windows.Forms.Label" Then
pnl_liste.Controls(numero).text = "Stop"
end if

Est-ce bien ça, ou pensiez-vous à une autre technique ?

Merci d'avance ,
Yan


--------------------------
"Fred" a écrit dans le message de news:

Dans : news:%,
Patrice disait :
Le plus simple et le plus performant serait d'utiliser un tableau de
Label...



Bonjour,

Ou bien, une fois les nouveaux contrôles ajoutés dans un container (ce que
je ne vois pas ici ?), utiliser la propriétés Controls du container en
question. Cette collection permet un accès à chaque contrôle enfant par un
index ou son nom.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
Fred
Dans : news:,
Yan disait :
Bonjour,



Bonjour,

Merci pour votre réponse.
En fait, j'ai simplifié mon exemple, et mes labels sont générés dans
un panel.



OK

Ce que vous me suggérez, c'est quelque chose du genre :
pnl_liste.Controls(numero).text = "Stop"



Pourquoi pas, mais je pensais plutôt à une solution beaucoup plus proche
de ce que tu envisageais :
pnl_liste.Controls("lbl_test_" & numero.ToString).text = "Stop"


Mais si le panel contient un mélange de contrôles cela m'obligerais à
faire quelque chose du style (dans une boucle) :
If pnl_liste.Controls(numero).GetType().ToString > "System.Windows.Forms.Label" Then
pnl_liste.Controls(numero).text = "Stop"
end if



Oui. Je crois qu'on peut faire un peu plus bref avec :
pnl_list.Controls(numero).GetType.Equals(GetType(Label))
Je me méfie des ToString :-)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Patrice
Quelque chose comme :

Dim i As Integer
Dim lbl_test(2) As Label
For i = 0 To 2
lbl_test(i) = New Label
lbl_test(i).Name = "lbl_test_" & i
lbl_test(i).Text = "Texte n° " & i
lbl_test(i).Top = i * lbl_test(i).Height
Controls.Add(lbl_test(i))
Next
lbl_test(1).Text = "Stop"
lbl_test(1).BackColor = Color.Yellow



Les contrôles ajoutés dans le formulaire sont simplement placés dans un
tableau pour pouvoir être facilement accédés ensuite...


--

Patrice


"Yan" a écrit dans le message de news:
OGj3%
Bonjour,

Merci pour votre réponse, je ne sais pas ce qu'est un tableau de Label,
auriez-vous un exemple à me communiquer ?

Merci encore,
Yan

---------------------------------
"Patrice" a écrit dans le message de news:
%
Le plus simple et le plus performant serait d'utiliser un tableau de
Label...

--
Patrice

"Yan" a écrit dans le message de news:
%
Bonjour à tous,

J'aimerai savoir s'il existe un équivalent à la fonction eval() en
VB.net (version VB 2002).

Par exemple :
For i = 0 To 2
Dim lbl_test As Label = New Label()
lbl_test.Name = "lbl_test_" & i
lbl_test.Text = "Texte n° " & i
Next

Dim numero As Integer = 1
eval("lbl_test_" & numero).text = "Stop"

Merci d'avance pour votre aide,
Yan











Avatar
Yan
Ahhh ! excellent !

Merci Fred, c'est exactement ce qu'il me fallait, je vais mettre ça tout de
suite en application.

Merci encore,
Yan


-------------
"Fred" a écrit dans le message de news:
%
Dans : news:,
Yan disait :
Bonjour,



Bonjour,

Merci pour votre réponse.
En fait, j'ai simplifié mon exemple, et mes labels sont générés dans
un panel.



OK

Ce que vous me suggérez, c'est quelque chose du genre :
pnl_liste.Controls(numero).text = "Stop"



Pourquoi pas, mais je pensais plutôt à une solution beaucoup plus proche
de ce que tu envisageais :
pnl_liste.Controls("lbl_test_" & numero.ToString).text = "Stop"


Mais si le panel contient un mélange de contrôles cela m'obligerais à
faire quelque chose du style (dans une boucle) :
If pnl_liste.Controls(numero).GetType().ToString >> "System.Windows.Forms.Label" Then
pnl_liste.Controls(numero).text = "Stop"
end if



Oui. Je crois qu'on peut faire un peu plus bref avec :
pnl_list.Controls(numero).GetType.Equals(GetType(Label))
Je me méfie des ToString :-)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
Yan
Re,

Fausse joie. Apparemment, "controls" n'accepte que des entiers comme
paramètre.

Merci quand même,
Yan


---------------------
"Yan" a écrit dans le message de news:
ePz%
Ahhh ! excellent !

Merci Fred, c'est exactement ce qu'il me fallait, je vais mettre ça tout
de suite en application.

Merci encore,
Yan


-------------
"Fred" a écrit dans le message de news:
%
Dans : news:,
Yan disait :
Bonjour,



Bonjour,

Merci pour votre réponse.
En fait, j'ai simplifié mon exemple, et mes labels sont générés dans
un panel.



OK

Ce que vous me suggérez, c'est quelque chose du genre :
pnl_liste.Controls(numero).text = "Stop"



Pourquoi pas, mais je pensais plutôt à une solution beaucoup plus proche
de ce que tu envisageais :
pnl_liste.Controls("lbl_test_" & numero.ToString).text = "Stop"


Mais si le panel contient un mélange de contrôles cela m'obligerais à
faire quelque chose du style (dans une boucle) :
If pnl_liste.Controls(numero).GetType().ToString >>> "System.Windows.Forms.Label" Then
pnl_liste.Controls(numero).text = "Stop"
end if



Oui. Je crois qu'on peut faire un peu plus bref avec :
pnl_list.Controls(numero).GetType.Equals(GetType(Label))
Je me méfie des ToString :-)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT






Avatar
Yan
Merci Patrice, c'est pas mal du tout, je vais tenter de l'intégrer à mon
code.

Merci encore,
Yan


----------------------------
"Patrice" a écrit dans le message de news:
%
Quelque chose comme :

Dim i As Integer
Dim lbl_test(2) As Label
For i = 0 To 2
lbl_test(i) = New Label
lbl_test(i).Name = "lbl_test_" & i
lbl_test(i).Text = "Texte n° " & i
lbl_test(i).Top = i * lbl_test(i).Height
Controls.Add(lbl_test(i))
Next
lbl_test(1).Text = "Stop"
lbl_test(1).BackColor = Color.Yellow



Les contrôles ajoutés dans le formulaire sont simplement placés dans un
tableau pour pouvoir être facilement accédés ensuite...


--

Patrice


"Yan" a écrit dans le message de news:
OGj3%
Bonjour,

Merci pour votre réponse, je ne sais pas ce qu'est un tableau de Label,
auriez-vous un exemple à me communiquer ?

Merci encore,
Yan

---------------------------------
"Patrice" a écrit dans le message de news:
%
Le plus simple et le plus performant serait d'utiliser un tableau de
Label...

--
Patrice

"Yan" a écrit dans le message de news:
%
Bonjour à tous,

J'aimerai savoir s'il existe un équivalent à la fonction eval() en
VB.net (version VB 2002).

Par exemple :
For i = 0 To 2
Dim lbl_test As Label = New Label()
lbl_test.Name = "lbl_test_" & i
lbl_test.Text = "Texte n° " & i
Next

Dim numero As Integer = 1
eval("lbl_test_" & numero).text = "Stop"

Merci d'avance pour votre aide,
Yan















Avatar
Fred
Dans : news:,
Yan disait :
Re,

Fausse joie. Apparemment, "controls" n'accepte que des entiers comme
paramètre.



Ah ?
Cela fonctionne chez moi mais je suis en framework 2.0
Cela me paraissait assez basique pour exister dans le 1.1 :-(
Surtout qu'il me semble l'avoir fait déjà en VB6 !

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT