- PR -

【VS2005 動的に作成したコントロールの探し方について】

1
投稿者投稿内容
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2006-10-19 21:09
開発環境
VisualBasic2005

 フォーム上に動的にコントロールを作成しています。
コントロール作成後にそのコントロールを参照する方法が分からないのですが、
何か良い方法を知っている方、いらっしゃいませんでしょうか?

  当方、初心者で知識不足ですが、宜しくお願い致します。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-19 21:15
引用:

うたさんの書き込み (2006-10-19 21:09) より:

コントロール作成後にそのコントロールを参照する方法が分からないのですが、
何か良い方法を知っている方、いらっしゃいませんでしょうか?


自分で動的に作成しているのだから、インスタンスは自分で管理できますよね。
名前で検索する方法もありますが、コンパイル解決できていないのでお勧めできません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ダッチ
大ベテラン
会議室デビュー日: 2005/10/31
投稿数: 113
投稿日時: 2006-10-19 23:14
ダッチです。
引用:

じゃんぬねっとさんの書き込み (2006-10-19 21:15) より:

自分で動的に作成しているのだから、インスタンスは自分で管理できますよね。
名前で検索する方法もありますが、コンパイル解決できていないのでお勧めできません。



うたさん、どのようにインスタンスを管理しましょうか。

コントロールが動的に作成されるので、複数のコントロールを管理しなくてはなりませんね。
複数のオブジェクトを扱うといったらコレクションが最適ですね。
コレクションといってもいろいろありますけど、
作成するコントロールの型が同じなら
List(Of 作成するコントロールの型) などいいのではないでしょうか。

後はコントロールを作成するたびに List へ Add すればインスタンスはいつでも参照できます。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-10-19 23:42
引用:

うたさんの書き込み (2006-10-19 21:09) より:

 フォーム上に動的にコントロールを作成しています。
コントロール作成後にそのコントロールを参照する方法が分からないのですが、



作成というのは、オブジェクトを生成しているという意味ですよね?
生成したオブジェクトを参照すれば良いということではないのでしょうか?
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-10-20 00:17
引用:

 フォーム上に動的にコントロールを作成しています。
コントロール作成後にそのコントロールを参照する方法が分からないのですが、
何か良い方法を知っている方、いらっしゃいませんでしょうか?


その説明だと幾通りにも解釈できてしまうので、適切にアドバイスするのは難しいです。
実際どのようなコードを書いていて、どうしたいのかを具体的に書いてください。
_________________
囚人のジレンマな日々
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-10-20 03:44
予想。
Me.Controls.Add(New 〜)

で、その対策。
Private 〜用の変数 As New 〜
Me.Controls.Add(〜用の変数)
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2006-10-20 08:25
返信が遅くなってしまいまして申し訳ございません。

説明も不足しておりましたので、詳細を説明いたします。

1、デザイナでWindowsフォームにTabControlを用意しておきます。
2、プログラムでTabControlの1ページ目にTabControlを生成します。
3、データベースより情報を読込み、抽出した分類の数だけ、2で生成した
  TabControlにTabPageを生成します。
4、3で生成したTabPageにさらにTabControlを生成し、3の手順を行います。
5、4で生成したTabPageにDataGridViewを生成します。

2のコード-------------------------------------------------
 Dim txtTest1 As New TextBox

 txtTest1.Name = "txtTest"
 txtTest1.Location = New System.Drawing.Point(50, 50)
 Me.TabControl2.TabPages(0).Controls.Add(txtTest1)
------------------------------------------------------------

 2をFormLoad時に行っています。
その後に3を行いたいのですが、生成したコントロールを探せないので
3以降に進めずにいます。

 まず、皆さんからアドバイスいただいた方法を一づつ試してみます。
ご教授いただきましてありがとうございます。

 試した結果はまた書き込みさせて頂きます。
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2006-10-20 18:19
 じゃんぬねっとさん、ダッチさんから教えていただいた通り、
インスタンスをListで管理することで、動的に生成したコントロ
ールを参照する事ができるようになりました。
 皆さん本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)