トップ回答者
TabControlでTabPageを複写追加する方法

質問
回答
-
TabPageを追加する際に、ベースTabPageに配置してあるコントロール(GroupBoxなど)を
正直、そのまま実現するのは難しいです。
すべて複写するにはどうしたらよいのでしょうか?
ベースTabPageそのものを複写して追加するといったことは可能なんでしょうか?
ユーザコントロールを検討してみませんか?
難しい理由としては、TabPageの中にさらにTabControlが貼られていたり、その中にGroupBoxやPanelがあったりすると、それらの上に貼り付けられているコントロールも全て列挙して、コピーして、新しく作ったTabPageに貼り付けていかないといけません。
子コントロールを全てフォローするのは大変ですし、それらのコントロールにイベントを割り付ける等のフォローやイベントが呼び出されたときにどのコントロールが影響するかとか考えるのも大変です。
これに対して、TabPageに貼り付けてあるコントロールを全てユーザコントロールとしてくくり出すと、新しくTabPageを作って、その上にユーザコントロールを1つ作って貼り付けるだけということで、複製に近い処理は少なく済みます。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク WINAMA 2009年5月15日 0:54
-
TabControlで、動的に新規TabPageを追加していく機能を仮で作成しました。
そのTabControlには、ベースとなるTabPageが1つデザイナで作成してあります。
TabPageを追加する際に、ベースTabPageに配置してあるコントロール(GroupBoxなど)を
すべて複写するにはどうしたらよいのでしょうか?
ベースTabPageそのものを複写して追加するといったことは可能なんでしょうか?
デザイナで作成したのであれば、そのコードがInitializeComponent()にありますので、そのコードを拝借して新しいTabPage上にコントロールを作成することで実現することもできます。もちろん、デザイナでコントロールをいじればInitializeComponent()内のコードは変化してしまいますから、その度に新たにTabPageを作成するコードもそれに合わせて変更しなければなりませんが・・・
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
すべての返信
-
TabPageを追加する際に、ベースTabPageに配置してあるコントロール(GroupBoxなど)を
正直、そのまま実現するのは難しいです。
すべて複写するにはどうしたらよいのでしょうか?
ベースTabPageそのものを複写して追加するといったことは可能なんでしょうか?
ユーザコントロールを検討してみませんか?
難しい理由としては、TabPageの中にさらにTabControlが貼られていたり、その中にGroupBoxやPanelがあったりすると、それらの上に貼り付けられているコントロールも全て列挙して、コピーして、新しく作ったTabPageに貼り付けていかないといけません。
子コントロールを全てフォローするのは大変ですし、それらのコントロールにイベントを割り付ける等のフォローやイベントが呼び出されたときにどのコントロールが影響するかとか考えるのも大変です。
これに対して、TabPageに貼り付けてあるコントロールを全てユーザコントロールとしてくくり出すと、新しくTabPageを作って、その上にユーザコントロールを1つ作って貼り付けるだけということで、複製に近い処理は少なく済みます。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク WINAMA 2009年5月15日 0:54
-
TabControlで、動的に新規TabPageを追加していく機能を仮で作成しました。
そのTabControlには、ベースとなるTabPageが1つデザイナで作成してあります。
TabPageを追加する際に、ベースTabPageに配置してあるコントロール(GroupBoxなど)を
すべて複写するにはどうしたらよいのでしょうか?
ベースTabPageそのものを複写して追加するといったことは可能なんでしょうか?
デザイナで作成したのであれば、そのコードがInitializeComponent()にありますので、そのコードを拝借して新しいTabPage上にコントロールを作成することで実現することもできます。もちろん、デザイナでコントロールをいじればInitializeComponent()内のコードは変化してしまいますから、その度に新たにTabPageを作成するコードもそれに合わせて変更しなければなりませんが・・・
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/ -
正直、そのまま実現するのは難しいです。
ユーザコントロールを検討してみませんか?
難しい理由としては、TabPageの中にさらにTabControlが貼られていたり、その中にGroupBoxやPanelがあったりすると、それらの上に貼り付けられているコントロールも全て列挙して、コピーして、新しく作ったTabPageに貼り付けていかないといけません。
子コントロールを全てフォローするのは大変ですし、それらのコントロールにイベントを割り付ける等のフォローやイベントが呼び出されたときにどのコントロールが影響するかとか考えるのも大変です。
これに対して、TabPageに貼り付けてあるコントロールを全てユーザコントロールとしてくくり出すと、新しくTabPageを作って、その上にユーザコントロールを1つ作って貼り付けるだけということで、複製に近い処理は少なく済みます。
まさしく、GroupBox等が複雑に配置されています。
後学のためにも、ユーザコントロールにチャレンジしてみたいと思います。
ありがとうございました。