サイト内検索

 TabControlEx改 for VB.NET(2015.08)
【 開発 】Visual Basic 2010(.NET Framework 4)
【 検証 】Windows XP、Vista、7、8
【 種別 】フリーウェア

TabPageをマウスドラッグで移動する

タブをマウスで自由に移動したいと要望があり・・・少し調べてみたのですが、 ドンピシャなモノが見つからず、と言うかVB用のモノは見つからず・・・ 結果C#用のソースを流用させて頂くこととなりました。

まず、はじめにソースとさせていただいた
「はてなID:barycentric」様に感謝の意と、この場をお借りして御礼を、 参考にさせていただいたページは、 こちらです。 いくつか拝見させていただいた中で、一番シンプルで読みやすかったことから選択させて頂くこととなりました。 barycentricさんも他の方のソースを参考にされているようで、そちらは参考ページからご参照いただければと思います。

今回、行った作業は、C#用のコードをVB用に変換し、上手く変換できなかった部分を修正、 変数等を少しだけ改ざんさせていただき、筆者なりに最適化させていただいておりますが、 コメント類に関しては出来る限りオリジナルを残しています。 また、特定のタブを移動したくない場合の対応として、サンプルコードをコメントとして入れています。 必要に応じて、応用いただければと思います。

参考文献があまりにも少ないため、今回はテストコードも含め公開しようと考えました。 ある程度はテストコードでご理解いただけるかと思います。 拙いコードではありますが、参考にしていただければと・・・ 利用に関しては、まず「TabControlEx.vb」を既存ファイルを追加からプロジェクトへ含めてください。 通常のコントロールとは違い、動的にオブジェクトを作成し、各プロパティの設定や イベントへの関連付けも自分で行います。また、TabPageに乗せるコントロールも自分で配置しなければなりません。

上記のように面倒な部分も多々あります。そこで、開発時の裏技的なTipsを少し・・・ 開発中は、ツールボックスにある通常のTabControlを用いて開発を行います。一通りコーディングを終えたら入れ替え作業です。 はじめに、通常のTabcontrolを削除します。すると、持ち主を失ったイベントは「Handles」部分が空に、 対象のコントロールを失ったコードはエラーとなります。 そこで、改めてイベントプロシージャへの関連付けを行い、開発環境のエラーチェック機能を利用して エラー行をTabControlExオブジェクトに置き換えてあげれば、簡単に入れ替えることが出来ます。 実際に筆者は、この方法を用いて開発を行っていたりします。

今更ですが・・・そもそも、それぞれのTabPageが別々の役割を持つアプリケーションには向いていないのではないかと・・・ タブブラウザのように、各TabPageに統一された機能が割り当てられており、 それらの順番を入れ替えたい時にこそ必要な機能ではないかと思ったりもするのですが・・・