2

シナリオは次のとおりです。コンボボックスを使用して formborderstyle を設定したいです。

これらの方法で、borderstyle を「None」に正常に設定できます。

Form1.FormBorderStyle = 0

または

Form1.FormBorderStyle = Windows.Forms.FormBorderStyle.None

文字列でこれを行うにはどうすればよいですか?

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

次のエラーが表示されます:文字列 "Windows.Forms.FormBorderStyle.No" から型 'Integer' への変換が有効ではありません。


Form1.formborderstyle は整数のみを取るようです。実際に整数を使用せずに、文字列を対応する整数に変換できる方法はありますか... evalのようなものですか?

最終的には、次のようになることを望んでいました。

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

1 に答える 1

3

使用Enum.(Try)Parse:

Enum.Parse

1 つ以上の列挙定数の名前または数値の文字列表現を、同等の列挙オブジェクトに変換します。

ドキュメントとこの回答には、構文の例があります。あなたはおそらく次のようなものを求めています:

Form1.FormBorderStyle = CType([Enum].Parse(GetType(FormBorderStyle), ComboBox1.Text), FormBorderStyle)
于 2013-07-28T06:17:01.073 に答える