- - PR -
複数のコントロール持ったタブコントロールを作成したい
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-23 17:24
お教え下さい:
現在、XMLファイルを読み込み、その内容の一部を抜き出して フォーム上にあるラベルやリストボックスに値を代入して表示する、 というwindowsアプリを作成しています。 今まではこれで問題なかったのですが、 「複数のxml文書を読み込んで表示させたい」 との要望があり、改修を加えたいと思っています。 基本的なアイデアとして、タブブラウザのように 1つのXMLに対して1つのタブを表示できればと思っていたのですが、 初っ端から沢山のコントロールを持ったページを自動的に作成する、 という所で行き詰っています。 自分なりにネットも検索したのですが、 タブコントロールの基礎的な事柄以外見つけられずに困っています。 もし実現不可の場合、他にやり方をご存知でしたらお教え下さい。 よろしくお願いいたします。 開発言語:vb.NET 2005 環境:Windows XP pro sp2 タブのイメージ +------------+------------+ |ファイル名1|ファイル名n| +------------+------------+-----------------------+ | ラベル1 | ラベル2 | ラベル3 | +リストボックス-------------------+ | | 項目1 | | 項目2 | | 項目n | +---------------------------------+ +-------------------------------------------------+ 編集コメント: エディタ画面だときれいにAAできるんですが…グハァ [ メッセージ編集済み 編集者: JAKEWISE 編集日時 2006-05-23 17:42 ] | ||||||||||||||||
|
投稿日時: 2006-05-23 18:06
TabControl に追加したいコントロールのインスタンスを生成して、 TabControl の Controls プロパティ (コレクション) に Add するだけじゃないでしょうか? そういう意味ではないですか?
[code][/code]で括れば、固定ピッチフォントで書き込みできると思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-05-23 18:26
タブコントロールの実装経験がないので初歩的に聞こえるかもしれません。 ページを追加するコードはこんな感じだと思うのですが…
こういった場合、tabPage1やtext1のようなコントロールの名前は 同じでかまわないのでしょうか? 初歩的な質問でスミマセン (^^;; | ||||||||||||||||
|
投稿日時: 2006-05-23 18:48
タブページごとにコントロールを割り当てるなら、コントロールクラスのインスタンスを配列に格納するなどした方が管理しやすいかもしれません。 TextBox[] t; ←こんな感じ。 同じ画面構成であるなら、同一のコントロールの表示内容をアクティブなタブが変わるたびに変更する手もありますが、この場合コンテナを変更しないといけませんね。 | ||||||||||||||||
|
投稿日時: 2006-05-23 19:14
はい、インスタンスとして独立していますから構いません。 変数に参照として (この場合は text) 保持しておくならば、"参照" は上書きされます。 実体は、Controls プロパティのコレクションでユニークです。
全然問題ないと思います。 そんなに謝らないでください。(*_ _) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-05-23 19:18
> こういった場合、tabPage1やtext1のようなコントロールの名前は
> 同じでかまわないのでしょうか? 「名前」はあまり重要ではないですよ。 単純に配列のように扱いたいのであれば、 次のようなこともできるでしょう(かなり無理な例ですが・・・) '新規テキストボックスを指定したタブページに配置 private function AddTextBox(page TabPage) as integer 'テキストボックス作成 dim textbox as TextBox = new TextBox 'タブページに配置 page.Controls.Add(textbox) textbox.Location = ・・・・ 'コレクションに格納 return m_TextBoxList.Add(textbox) '格納インデックスを返す end function '作成したテキストボックスを格納しておくコレクション private m_TextBoxList as ArrayList = new ArrayList() ようは、作成したテキストボックスをどこかに格納しておけばよいです。 テキストボックスだけをコレクションに入れておけば、 全てのテキストボックスに対して何らかの処理を行うこともできるでしょう。 複数のXMLを表示したいという話ですが、 1つのXML表示機能を複数ファイル分用意したいのでしょうか。 であれば、現在表示に使用しているテキストボックスやリストをまとめ、 それをユーザーコントロールにして、1ファイルに対する表示編集ロジックを書き込みます。 タブページにはユーザーコントロールを格納していけば、 もっとすっきりするかもしれません。 | ||||||||||||||||
|
投稿日時: 2006-05-23 21:24
どうも簡単にできすぎて気持ち悪いですw
どうも質問するのに気が引ける部分があるんですよね。 調べれば何とかなるのかなぁと思うと、つい腰が低くなってしまいますw
そうですね、その通りです。
とても便利そうですね、やってみます! |
1