2 votes

VB.net Express 2010 eval ?

Le scénario est le suivant : Je veux définir le formborderstyle à l'aide d'une combobox.

Je peux définir le style de bordure à "Aucun" avec ces méthodes :

Form1.FormBorderStyle = 0

Ou

Form1.FormBorderStyle = Windows.Forms.FormBorderStyle.None

Comment pourrais-je faire ça avec une chaîne de caractères ?

Dim formstyle As String
formstyle = "Windows.Forms.FormBorderStyle." & ComboBox1.Text
Form1.FormBorderStyle = formstyle

Je reçois cette erreur : La conversion de la chaîne "Windows.Forms.FormBorderStyle.No" en type 'Integer' n'est pas valide.


Il semble que Form1.formborderstyle ne prenne que des entiers. Sans utiliser les nombres entiers, existe-t-il un moyen de convertir la chaîne de caractères en son équivalent en nombres entiers... un peu comme un eval ?

En fin de compte, j'espérais que ça ressemblait à quelque chose comme ça :

Dim formstyle As String
formstyle = "Windows.Forms.FormBorderStyle." & ComboBox1.Text
Form1.FormBorderStyle = eval(formstyle)

3voto

ta.speot.is Points 15157

Utilisez Enum.(Try)Parse :

Enum.Parse

Convertit la représentation en chaîne du nom ou de la valeur numérique d'une ou plusieurs constantes énumérées en un objet énuméré équivalent.

La documentation et cette réponse présente un exemple de la syntaxe. Vous cherchez probablement quelque chose comme :

Form1.FormBorderStyle = CType([Enum].Parse(GetType(FormBorderStyle), ComboBox1.Text), FormBorderStyle)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X