- - PR -
ラベルの配列使用について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-12-27 11:43
こんにちは。
Vc++Express?.net??(すいません。その辺の知識もないです)にて、 ラベルを使ってデータ表示を行うダイアログボックスを作成しようと 思っているのですがラベル数は、不明なため配列で定義しておいて必要分だけ 表示するようにしようと考えています。 で、以下のように配列を定義して、Textに文字を入れていこうと思ったのですが コンパイルは通るのですが、実行すると 'System.NullReferenceException' の初回例外が ***.exe で発生しました。 'System.NullReferenceException' のハンドルされていない例外が ***.exe で発生しました。 追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。 とエラーになってしまいます。 −−−−−−−ソース部分−−−−−−−− array<Label^>^adr=gcnew array<Label^>(3); for(i=0;i<3;i++){ adr[0]->Text="0"; adr[0]->Location=Point(10,20+i*10); adr[0]->AutoSize=true; form1->Controls->Add(adr[0]); } adr[0]->Text="0"の時点で、だめなようなんですが こういう使い方は誤りってことですよね? でも、どういう風に作成したらよいのかがわかりません。 どなたか、こんな初心者へ教えていただける方はいらっしゃいませんか? よろしくお願いします。 | ||||||||||||
|
投稿日時: 2006-12-27 11:50
array を gcnew しただけでは、言ってみれば本棚を設置しただけであってまだ中の本は入れられていません。
それぞれの要素についても gcnew してやる必要があります。 | ||||||||||||
|
投稿日時: 2006-12-27 11:55
この例外が、何を示すのか理解されていますでしょうか? 配列のインスタンスは確保しているようですが、配列の要素のインスタンスは確保していませんよね。
よって、これは誤った結論です。
ところで、添え字が '0' 固定では意味がないでしょう。 'form1' も正しくは 'this' ではないでしょうか。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-12-27 12:46
ご回答ありがとうございました。
なんとなくですが、理解できました。 最終的にはこのようにしました。 −−−−−−コード−−−−− Form^ form1 = gcnew Form; array<Label^>^adr=gcnew array<Label^>(3); for(i=0;i<3;i++){ adr[i]=gcnew Label; adr[i]->Text=i.ToString("X"); adr[i]->Location=Point(15,25+i*15); adr[i]->AutoSize=true; form1->Controls->Add(adr[i]); } これで、前に進めます。ありがとうございました。 |
1