- - PR -
クリックしたLABEL名を取得するには
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-28 11:16
はじめまして。.NETは始めて2ヶ月程度の初心者です。
現在フォーム上に100個近くのLABELがあります。 そのLABELのいずれかをクリックしたときに 別のフォームを表示させ、そのフォーム上のtextboxに LABELのテキストのデータを表示させようと考えています。 最初はLABELひとつひとつのクリックイベントに書き込もうと 思ったのですが、LABELの数が多いだけに、この作業だけで、かなりの行数になってしまいます。 そこで、クリックしたLABELが取得できれば、そのLABELのTEXTをフォームのテキストボックスへといったイベントを起こすことができればと思いました。 なにか、この作業をまとめて行うことは可能でしょうか? 可能でしたら、教えていただけないでしょうか? よろしくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2006-02-28 11:22
すいません。開発環境はMicrosoft visual basic.NET2003です。OSはWINDOWS XP Professionalです。よろしくお願いいたします。
| ||||||||||||||||
|
投稿日時: 2006-02-28 11:24
普通はコントロールの配列を作成し、イベント ハンドラを統合します。 コントロールの配列を作成する 後は、sender 引数から煮るなり焼くなりしてください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-02-28 11:49
たんばりんさん,こんにちは。
じゃんぬねっとさんのおっしゃる通り,Addhandlerステートメントかプロシージャ宣言の Handles句でイベントハンドラの統合すればよいと思います。 ただ,すでにフォームデザイナでラベルを100個おいてしまっていて,それを できるだけ生かしたいのなら,下のような方法でもイベントの処理を統合出来ると思います。参考にしてみてください。
[ メッセージ編集済み 編集者: YAS 編集日時 2006-02-28 11:59 ] | ||||||||||||||||
|
投稿日時: 2006-02-28 12:02
先のコードで動くことは動くのですが,MultiEventをちゃんと
宣言しないと,いつまでもメモリに残ったり,逆にGCに片づけられ ちゃったりするかも。(そこのところは実はよく知りません) [ メッセージ編集済み 編集者: YAS 編集日時 2006-02-28 12:04 ] | ||||||||||||||||
|
投稿日時: 2006-02-28 12:07
おー、そっか。(^^) その Label 郡が「表」という概念を持ち合わせているならば、 動的に生成した方が、何かと保守性は良いのでしょうが、 そうでないのであれば、デザイナは重くなりますがベタに貼った方が良いかもしれませんね。
間違ってはいませんけど、ちょっと回りくどいような...
で良いんじゃないですか?
ここは、何故 Inherits Control なのでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-02-28 12:12
おぉ!勉強になります。このやり方は気がつきませんでした。 ありがとうございました。
すみません。消し忘れです。 最初はフォームに貼り付けて,プロパティにラベルを設定するような 方法を考えていて,それならControlを継承すればいいかなと思い, 試した痕跡です。 | ||||||||||||||||
|
投稿日時: 2006-02-28 12:30
別クラスにしない方が良い場合もあると思って、こういうスタンダードな方法も投下。
クラスにするにしてもインナークラスにした方が良いかもしれませんね。 sender の型を問題視するならば、自作の Delegate で... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |