|
■No81032 (すき家 さん) に返信 > Dim menuFile00 As New List(Of ToolStripMenuItem) この場合、menuFile00 は、ToolStripMenuItem 型に対するコレクションとなります。
> menuFile00.Add("ビルド日時") menuFile00 に String 値を Add していますね。
Add するのは文字列のインスタンスではなく、 ToolStripMenuItem のインスタンスですよ。
例: menuFile00.Add(New ToolStripMenuItem("ビルド日時"))
> Dim menuFile0(,) = New ToolStripMenuItem(1, 1) {} ちなみに Dim menuFile0(1, 1) As ToolStripMenuItem と書いても同じ結果が得られます。
で、この場合は menuFile0(0, 0) 〜 menuFile0(1, 1) までの 4 つの要素を持つ 2 次元配列を用意しているだけであり、 それぞれの要素の中身は、まだ Nothing の状態です。
> menuFile0(0, 0).Text = "ビルド日時" これは要するに、 Dim txt As TextBox txt.Text = "あいうえお" がエラーになるのと同じ理由です。
menuFile0(0, 0) や txt が Nothing のままなので、 .Text プロパティへのアクセスが失敗しています。
たとえば上記の例であれば、 Dim txt As TextBox txt = Me.TextBox1 'デザイン時に作成したインスタンスをセット txt.Text = "あいうえお" あるいは Dim txt As TextBox txt = New TextBox() '実行時にインスタンスを作成 txt.Text = "あいうえお" Me.Controls.Add(txt) のように、TextBox のインスタンスをセットしてからでないと .Text プロパティを読み書きする事はできません。
配列の場合も同様です。
現在は各要素が Nothing のままなので、それぞれの要素に ToolStripMenuItem クラス(または ToolStripMenuItem の派生クラス)の インスタンスをセットしておく必要があります。
menuFile0(0, 0) = New ToolStripMenuItem() menuFile0(0, 0).Text = "ビルド日時"
|