2015年02月08日

タブコントロールはじめました

 年末に腸が大反乱を起こしてからというもの、毎朝ヨーグルト食ってますが、プレーンヨーグルトをいちいちフタ開けてスプーンで食うの面倒なんですよね。無糖の飲むヨーグルトってないものかと調べたら、何のことはない、水か牛乳で割れ との事です。そりゃそうだ。そして作ったら旨かった。お気に入り。
 問題点としては、1Lの広口ボトルで作ったら、とにかく見た目が汚い。


 そんな訳で今日はタブコントロールのお話です。ヨーグルトは一切関係ありません。
20150208a.png
 タブコントロールはこんな人ですね。ごった煮のツールを作る時には重宝します。

えッ?、普通に置くだけやん

 昔 Win32API だけで作ってた頃は、ソースコードでタブを作って、その中にリソースエディタで作ったページを並べたり、タブを押した事に反応してページを入れ替えたり、相当メンドウだったんですが、今はフォームデザイナーで置くだけなんですね。
 タブはもちろん、各タブのタイトルやページの中身まで、全部フォームデザイナーだけでできてしまいます。オジサンびっくりだよ。

 でもね、フォームデザイナーだけでタブの全ページをレイアウトをしてしまうと、1つのフォームクラスで全ページのコントロールを相手にしないといけません。これは相当ウザいです。大量のコントロールの名前を被らないように付けるのも一苦労だし。
 大抵の場合、タブコントロールの各ページって完全に独立した機能なので、ページごとにクラスを分けたいですよね。

みんな違って、みんないい!

 という事で調べてみたところ、各タブページごとに内容をまとめたユーザーコントロールを作って、それをメインフォームのタブコントロールに張り付ける、という作り方が定番らしい。
20150208b.png
 ユーザーコントロールはソリューションエクスプローラーから 「追加」 > 「新しい項目」 > 「ユーザーコントロール」 などで新規作成できます。新規作成すると、外枠のないフォームみたいのが出て来ますので、あとはフォームと同様にボタンなどを配置したり、機能を実装したりしましょう。なーんだ簡単じゃん!。.NET 様様だね。

あとは貼るだけ!。簡単、かんた‥‥ぅうん?

 そして最後に、作ったユーザーコントロールをメインフォームのタブに貼りつけるだけなのですが、なんかどうにも張り付け方が分からないので、調べてみたところ、

プロジェクト内で作成したユーザーコントロールは、ツールボックスに自動的に追加されるので、あとはボタンなどと同様に貼りつけるだけです!

 ‥‥と、どこのサイトも当然のように書いてあるんですけどね。ツールボックスのどこをいじっても、自作のユーザーコントロールは出て来ません。なんで?
 さらに調べること数時間、結局同じことで詰まってた人はほぼ居なかったんですが、なぜかツールボックスへの自動追加機能はデフォルトでオフ になってました。
 Visual Studio のメニューから 「ツール」 > 「オプション」を開いて、「Windowsフォームデザイナー」 > 「ツールボックス」 > 「AutoToolboxPopulate」 を True にしてください。

20150208c.png
 これでめでたくツールボックスからぽいっと貼りつけられるようになりますが、なんでこの機能がデフォルト False になってんですかね。そしてこれ以外の方法でフォームに貼りつけられる手段は結局見つけられなかったし。他に悩んでる人がほぼ居ないところを見ると、最近のバージョンではデフォルト True だったりするのかなぁ。

 ちなみに、ソースコードで貼りつけたいのなら、フォームのコンストラクタで以下みたいに書けば貼りつけられるんですけどね。フォームデザイナーで貼りつけらんないとかありえないので意地になって調べてたら1日が終わってしまった。
using System.Windows.Forms;

// タブコントロールにタブページを追加
var tabPage = new System.Windows.Forms.TabPage( "タブページ名" );
tabControl1.Controls.Add( tabPage );

// タブページにページの内容(UserControl派生)を追加
var tabContents = new MyTabPage();
tabPage.Controls.Add( tabContents );

// タブページのサイズに合わせて広げたい場合はこの設定
tabContents.Dock = System.Windows.Forms.DockStyle.Fill;

 しっかし、それ以外についても、ここ1ヶ月くらい真面目に Visual Studio 2010 とつきあって来た訳ですが、どうにもコイツぁ駄目な奴だとしか思えなくなってきたので、諦めて 2013 を試してみようかなぁ。せっかく今ならタダで使えるんだし

posted by ひこざ at 23:43| Comment(0) | 開発 - 全般
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。