VB.Net ではコントロールを配列化することはできません。プログラムコードで複数のコントロールを For 文で一括処理したい ことがあります。例えば Label1, Label2, ...Label30 があるとしてそれらのプロパティ .Tag を参照して ListBox1にリストアップしたい としましょう。これを1つ1つ
1. まず、次のような関数を用意します。 それは コントロール疑似配列化のための関数です。この関数をModule1.vbに作成しておきます。
引数indexに番号を受け取って、その番号が付いたフォーム内のLabelコントロールを返します。
'(Module1.vb) Function arryLabel(ByVal i As Integer, frmc As Control) As System.Windows.Forms.Label Dim ctrl As Control = frmc.Controls("Label" & i.ToString) arryLabel = DirectCast(ctrl, System.Windows.Forms.Label) End Functionここに frmc はコントロールのコンテナを指示する引数です。
2. 一連の処理をしたいフォーム、例えば Form1に、ListBox1があるとして Label1, Label2, ...Label30 のプロパティ Tag をリストアップする処理を考えましょう。どのようなプロパティでもよいですが、それらを参照するだけでそのコントロール上の イベントを用いないという条件が必要です。
'(Form1.vb) Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load Dim i As Integer ListBox1.Clear() For i = 1 To 30 ListBox1.Add(arryLabel(i, Me).Tag) Next i End Sub
3. 上記の事例は処理対象のコントロールが Form1 上に直接貼り付けられている場合です。もし別のコンテナ、 例えば Form1 にTabControl1があり、そのTabPage2 に Label1, Label2, ...Label30 があるときにはそのコンテナを指示 しなければなりません。
. . For i = 1 To 30 ListBox1.Add(arryLabel(i, Me.TabControl1.TabPages(1)).Tag) Next i .
VB.Net でフォームにリッチテキストボックスを貼りつけてこれに英数字記号などをキー入力すると、あらかじめデザイン時に指定してある使用フォントとは無関係に、勝手に別のフォントが使われてしまう。もっとも困るのは \ を入力してもバックラッシュ記号になってしまう。これは英語圏で使われているフォントで、Arialというフォントらしい。これを無効にするには次のようにすればよいことがわかりました。
まず、リッチテキストボックスを組み込んでいるフォームのデザイン編集画面を開きます。ここではそのフォームをForm1.vb[デザイン]
とします。またそこに置かれているリッチテキストボックスをRichTextBox1だと仮定します。
そのフォームのタイトルバーをダブルクリックします。すると下記のように Sub Form1_Load(..........) が現れます。そこで次のように
'(Form1.vb) Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load RichTextBox1.LanguageOption = RichTextBoxLanguageOptions.UIFonts End Sub参照サイト