none
他社製の CustamTabControl を使用する方法 RRS feed

  • 質問

  • 自分のプロジェクトで他社製品のタブコントロールを使用したいのですが,その設定の方法がわからないで困っています。

    別のプロジェクトで「TabControl というフォルダ」がソリューションエクスプローラーに配置されているのは確認しています。10数年前に実際に使ってはいたのですが,すっかり爺さんになってしまってどうやって使っていたのかまったく思い出せないのです。

    私がやってみたことは,
     ア 新しいフォルダを追加し,その名前をTabControl に変える
     イ フォルダ内の11このファイルを既存の項目として追加する
     ウ  追加したファイルをアのフォルダにおさめる
    ということまででした。その結果は○○.csを表示してみると数十のエラーが出てきました。初めて使用したときにはエラーは出なかったのでやはり設定に仕方が間違っているのだと認識した次第です。

    「 設置と設定の方法」と 「使い方」をご教授いただけますようお願いいたします。なお,このコントロールは CodeProject の製品でフリーに使うことができます。

     

    2019年7月17日 6:33

回答

  • dll 無しで動作させたい場合には、ソースコード一式をプロジェクトに取り込んでみてください。

    以下手順。

    1. 新規にプロジェクトを作成します。(C# / Windows フォーム アプリケーション / .NET Framework 3.5~4.8)
    2. ソリューション エクスプローラーで、プロジェクトの下に [CustomTabControl] フォルダーを作成します。
    3. [CustomTabControl] フォルダーの下に、さらに [TabStyleProviders] フォルダーを作成します。
    4. ソリューション エクスプローラーで、プロジェクト内の [CustomTabControl] フォルダーを右クリックして[既存の項目(G)...]を選択し、zip ファイル内の \CustomTabControl\TabControl\*..cs ファイル群を選択して追加します。
      • CustomTabControl.cs
      • NativeMethods.cs
      • TabStyle.cs
      • TabStyleProvider.cs
      • ThemedColors.cs
    5. 同様に、プロジェクト内の [CustomTabControl\TabStyleProviders] フォルダーの下に、\CustomTabControl\TabControl\TabStyleProviders\*.cs ファイル群を追加します。
      • TabStyleAngledProvider.cs
      • TabStyleChromeProvider.cs
      • TabStyleDefaultProvider.cs
      • TabStyleIE8Provider.cs
      • TabStyleNoneProvider.cs
      • TabStyleRounderProvider.cs
      • TabStyleVisualStudioProvider.cs
      • TabStyleVS2010Provider.cs
    6. ここで一度、プロジェクトをビルドします。エラー無くビルドできれば、ツールボックスに [CustomTabControl] が現れて使えるようになるはずです。
    7. ビルドが成功してもツールボックスにコントロールが現れない場合には、[ツール]-[オプション]設定から、[Windows フォーム デザイナ] または [Windows フォーム デザイナー] の項目を開き、[全般] にある [AutoToolboxPopulate] もしくは [ツールボックスの自動取得] を True に変更してから、もう一度ビルドしなおしてみてください。※ここの設定項目名は、Visual Studio のバージョンによって異なります。
    • 回答としてマーク goodwave 2019年7月19日 1:24
    2019年7月17日 12:06
  • <VS2008 with .NET Framework 3.5 用のプロジェクト一式>を見つけることができませんでしたので

    御提示頂いた URL から、NewCustomTabControl.zip をダウンロードできますよね。(展開前に zip ファイルを右クリックしてプロパティを開き、ブロック設定が付いていれば解除しておきましょう)

    zip を展開すると、ルート直下に CustomTabControl.sln ファイル(と 4 つのフォルダ群)が現れますので、それを Visual Studio で開くだけで OK です。

    .sln をメモ帳で開くと、このファイルが Visual Studio 2008 互換開発環境である SharpDevelop 3.2.0.5777 で作られたことがわかります。

    またこのソリューション ファイル(.sln)からは、2 つの C# プロジェクト(.csproj) と 2 つの VB プロジェクト(.vbproj) が開かれるようになっており、これらのプロジェクトは TargetFrameworkVersion が v3.5 に設定されております。

    dll 無しで動作させようとしたのですが,いきなり1の手順で進めてもいいのでしょうか?

    構いませんが、DLL にして使うにせよ、.cs ファイルのまま取り込むにせよ、この CustomTabControl をそのまま使うことはお奨めしません。手元の環境で使ってみましたが、描画処理に問題があるために Visual Studio が高負荷状態になり、最悪の場合、応答なしになって開発環境ごと強制終了させる羽目に見舞われました。

    ダウンロードページ下部の英語コメントにも、同様の "VS2017 becomes unresponsive" や "Random high CPU usage" や "Nice control but hangs in VS2013" といった報告があります。

    コメント "High CPU resolved" にもありますが、CustomTabControl.cs の OnPaint メソッドで Invalidate メソッドを呼び出していることが要因としてあります。この問題に対する修正コード例が、コメント "Regarding the Visual Studio form designer lockup when you place this control on your form..." や "[Solution] This solve the bug that the control have with the IDE / Window" などで提供されていますね。

    他にも、複数行タブでの描画問題、他のコンテナ(SplitContainer 等)との併用問題等が報告されていますので、このサンプルを利用するのであれば、これらの英語コメントにも一通り目を通しておかれることをお奨めします。


    • 編集済み 魔界の仮面弁士MVP 2019年7月19日 2:06 誤記訂正、英語コメントにリンクを付与
    • 回答としてマーク goodwave 2019年7月19日 3:13
    2019年7月19日 1:44

すべての返信

  • なお,このコントロールは CodeProject の製品でフリーに使うことができます。

    CodeProject の どの TabControl なのか はお分かりになりますか?

    2019年7月17日 7:49
  • 魔界の仮面弁士さん,ご返信ありがとうございます。

    https://www.codeproject.com/Articles/91387/Painting-Your-Own-Tabs-Second-Edition
      (ボタンHTMLの使い方がわかりませんでした)

    ここで,<一般Download C# and VB.Net Demo Source Code - 181.9 KB>をクリックすると,
    メールアドレスとパスワードを入力すると最新のTabControlをダウンロードできます。
    私が手に入れて使おうとしているのは10年以上前のものですが,フォルダの中のファイルは全く同じ構成になっているようです。

    よろしくお願いいたします。

    2019年7月17日 11:19
    1. ダウンロードした NewCustomTabControl.zip を展開し、VS2008 with .NET Framework 3.5 用のプロジェクト一式を任意のフォルダーにコピーします。
    2. Visual Studio 2008 以降のバージョンで \CustomTabControl.sln ファイルを開きます。VS2010 以降をお使いの場合は、アップグレード ウィザードが起動しますが、そのまま変換して読み込みます。
    3. 構成マネージャーで、アクティブ ソリューション構成を [Debug] 構成から [Release] 構成に変更します。
    4. ソリューション エクスプローラーから [CustomTabControl] プロジェクトを右クリックし、[リビルド]を選択します。
    5. Windows エクスプローラーで、\CustomTabControl\bin\Release\JacksonSoft.CustomTabControl.dll を、任意のフォルダーにコピーします。

    これで準備完了です。作業に使った CustomTabControl フォルダー一式は、もう消しても構いません。


    次に、この DLL をプロジェクトに組み込みます。

    1. 新規にプロジェクトを作成します。(C# / Windows フォーム アプリケーション / .NET Framework 3.5~4.8)
    2. Windows エクスプローラーで、先ほどコピーしておいた JacksonSoft.CustomTabControl.dll を右クリックして [コピー]してから、Visual Studio の ツールボックスを右クリックして[貼り付け]を選択します。
    3. ツールボックスに CustomTabControl のアイコンが追加されるので、Form1 デザイナにドラッグして貼り付けます。
    4. Form1 上に貼り付けられた customTabControl1 の DisplayStyle プロパティが動作しているかを確認してください。


    この方法の場合、プロジェクトの参照設定に JacksonSoft.CustomTabControl.dll が必要となります。

    dll 無しで動作させたい場合には、ソースコード一式をプロジェクトに取り込んでみてください。

    2019年7月17日 11:49
  • dll 無しで動作させたい場合には、ソースコード一式をプロジェクトに取り込んでみてください。

    以下手順。

    1. 新規にプロジェクトを作成します。(C# / Windows フォーム アプリケーション / .NET Framework 3.5~4.8)
    2. ソリューション エクスプローラーで、プロジェクトの下に [CustomTabControl] フォルダーを作成します。
    3. [CustomTabControl] フォルダーの下に、さらに [TabStyleProviders] フォルダーを作成します。
    4. ソリューション エクスプローラーで、プロジェクト内の [CustomTabControl] フォルダーを右クリックして[既存の項目(G)...]を選択し、zip ファイル内の \CustomTabControl\TabControl\*..cs ファイル群を選択して追加します。
      • CustomTabControl.cs
      • NativeMethods.cs
      • TabStyle.cs
      • TabStyleProvider.cs
      • ThemedColors.cs
    5. 同様に、プロジェクト内の [CustomTabControl\TabStyleProviders] フォルダーの下に、\CustomTabControl\TabControl\TabStyleProviders\*.cs ファイル群を追加します。
      • TabStyleAngledProvider.cs
      • TabStyleChromeProvider.cs
      • TabStyleDefaultProvider.cs
      • TabStyleIE8Provider.cs
      • TabStyleNoneProvider.cs
      • TabStyleRounderProvider.cs
      • TabStyleVisualStudioProvider.cs
      • TabStyleVS2010Provider.cs
    6. ここで一度、プロジェクトをビルドします。エラー無くビルドできれば、ツールボックスに [CustomTabControl] が現れて使えるようになるはずです。
    7. ビルドが成功してもツールボックスにコントロールが現れない場合には、[ツール]-[オプション]設定から、[Windows フォーム デザイナ] または [Windows フォーム デザイナー] の項目を開き、[全般] にある [AutoToolboxPopulate] もしくは [ツールボックスの自動取得] を True に変更してから、もう一度ビルドしなおしてみてください。※ここの設定項目名は、Visual Studio のバージョンによって異なります。
    • 回答としてマーク goodwave 2019年7月19日 1:24
    2019年7月17日 12:06
  • その結果は○○.csを表示してみると数十のエラーが出てきました。

    どんなエラーでしょうか?IDExxxx ~ だったら、ただのメッセージなので無視して構いません。


    • 編集済み KOZ6.0 2019年7月17日 13:52 スクリーンショット貼り付け
    • 回答としてマーク goodwave 2019年7月19日 1:24
    • 回答としてマークされていない goodwave 2019年7月19日 1:24
    2019年7月17日 12:11
  • 所用のため家を空けていたために返信が遅れてしまい申し訳ありませんでした。
    とても丁寧に説明してくださっておりますのに私の理解不足のせいで悪戦苦闘しております。

    <VS2008 with .NET Framework 3.5 用のプロジェクト一式>を見つけることができませんでしたので,dll 無しで動作させようとしたのですが,いきなり1の手順で進めてもいいのでしょうか?
    VS2019で下のようにやってみたのですがツールボックスにコントロールが現れませんでした。

    青枠のプロジェクトのビルドは成功しましたがツールボックスにコントロールが現れないので,もう一度ビルドしなおしてみようとしましたが [ツールボックスの自動取得] は既にTrueになっておりました。

    KOZ6.0さん,ありがとうございます。
    お示しいただきましたのと全く同じエラーでしたので安心しました。



    • 編集済み goodwave 2019年7月18日 19:46 追加
    2019年7月18日 19:18
  • VS2019で下のようにやってみたのですがツールボックスにコントロールが現れませんでした。

    たぶん、ツールボックスを上にスクロールすると現れるんじゃないかと思います。

    2019年7月19日 0:21
  • Koz6.0さん,数度のご返信ありがとうございます。

    スクロールしても現れないのですが,上記の設定方法でよろしいと理解して再チャレンジしてみようと思います。

    2019年7月19日 1:23
  • <VS2008 with .NET Framework 3.5 用のプロジェクト一式>を見つけることができませんでしたので

    御提示頂いた URL から、NewCustomTabControl.zip をダウンロードできますよね。(展開前に zip ファイルを右クリックしてプロパティを開き、ブロック設定が付いていれば解除しておきましょう)

    zip を展開すると、ルート直下に CustomTabControl.sln ファイル(と 4 つのフォルダ群)が現れますので、それを Visual Studio で開くだけで OK です。

    .sln をメモ帳で開くと、このファイルが Visual Studio 2008 互換開発環境である SharpDevelop 3.2.0.5777 で作られたことがわかります。

    またこのソリューション ファイル(.sln)からは、2 つの C# プロジェクト(.csproj) と 2 つの VB プロジェクト(.vbproj) が開かれるようになっており、これらのプロジェクトは TargetFrameworkVersion が v3.5 に設定されております。

    dll 無しで動作させようとしたのですが,いきなり1の手順で進めてもいいのでしょうか?

    構いませんが、DLL にして使うにせよ、.cs ファイルのまま取り込むにせよ、この CustomTabControl をそのまま使うことはお奨めしません。手元の環境で使ってみましたが、描画処理に問題があるために Visual Studio が高負荷状態になり、最悪の場合、応答なしになって開発環境ごと強制終了させる羽目に見舞われました。

    ダウンロードページ下部の英語コメントにも、同様の "VS2017 becomes unresponsive" や "Random high CPU usage" や "Nice control but hangs in VS2013" といった報告があります。

    コメント "High CPU resolved" にもありますが、CustomTabControl.cs の OnPaint メソッドで Invalidate メソッドを呼び出していることが要因としてあります。この問題に対する修正コード例が、コメント "Regarding the Visual Studio form designer lockup when you place this control on your form..." や "[Solution] This solve the bug that the control have with the IDE / Window" などで提供されていますね。

    他にも、複数行タブでの描画問題、他のコンテナ(SplitContainer 等)との併用問題等が報告されていますので、このサンプルを利用するのであれば、これらの英語コメントにも一通り目を通しておかれることをお奨めします。


    • 編集済み 魔界の仮面弁士MVP 2019年7月19日 2:06 誤記訂正、英語コメントにリンクを付与
    • 回答としてマーク goodwave 2019年7月19日 3:13
    2019年7月19日 1:44
  • 魔界の仮面弁士さん,ご親切なご教示ありがとうございます。

    ご教示くださった問題があるとは知らずに,タブを下に表示でき,サイズを小さくしても◀▶で多くのタブを表示できるのが気に入って使っていました。<修正コード例>を勉強してみます。

    2019年7月19日 3:13