InputManとPlusPakの旧バージョン(5.0J/6.0J)と同一プロジェクト内で共存させる方法

文書番号 : 35957     文書種別 : 使用方法     登録日 : 2013/05/24     最終更新日 : 2013/05/24
文書を印刷する
対象製品
MultiRow for Windows Forms 7.0J
詳細
MultiRow for Windows Forms 7.0J(以下、MultiRow7)では、InputManCellを使用するために、InputMan for Windows Forms 7.0J(以下、InputMan7)のアセンブリを参照する必要があります。同じように、MultiRow7でPlusPakCellを使用するには、PlusPak for Windows Forms 7.0J(以下、PlusPak7)のアセンブリを参照する必要があります。

MultiRow7では、InputManCellとPlusPakCellを標準機能として提供しているため、MultiRow7のGcMultiRowコントロールをフォームに追加した場合や、MultiRowテンプレートをプロジェクトに追加した場合には、プロジェクトの参照設定にInputMan7とPlusPak7のアセンブリが自動で追加されます。

そのため、同一プロジェクト内でInputMan for Windows Forms 5.0J/6.0JやPlusPak for Windows Forms 5.0J/6.0Jのコントロールを使用している場合には、名前空間が同じ複数のバージョンのアセンブリを参照することになり、プロジェクトのビルド時にアセンブリ参照で名前空間の競合エラーが発生します。

この問題を回避する方法は、C#とVisual Basicでそれぞれ異なります。
詳細については、以下の項目をご確認ください。

C#の場合
エイリアスを定義する方法で回避することができます。

【競合を回避する方法】
プロジェクトの参照設定で下記の参照に対して、プロパティウィンドウから「エイリアス」に任意の修飾子(例えば、"InputMan7")を定義します。
  • GrapeCity.Framework.InputMan.v22
  • GrapeCity.Framework.PlusPak.v22
  • GrapeCity.Win.Editors.v70
  • GrapeCity.Win.PlusPak.Calendar.v70
  • GrapeCity.Win.PlusPak.v70
これらは、MultiRow7を追加する際に自動的に生成されるInputMan7およびPlusPak 7の参照です。InputMan7/
PlusPak7を使用しない場合は、上記の設定によって名前空間の競合を回避し、正常にビルドできるようになります。

以下では、同じプロジェクトでMultiRow7とInputMan6のコントロールを併用する場合の設定方法の例を説明します。

1. プロジェクトを新規作成します。
2. フォームにInputMan6のGcTextBoxを追加します。(例:gcTextBox1)
3. フォームにMultiRow7のGcMultiRowを追加します。(例:gcMultiRow1)
4. プロジェクトをビルドすると、InputManのアセンブリ参照で競合エラーが発生します。
5. ソリューションエクスプローラの「参照設定」から、GrapeCity.Framework.InputMan.v22を選択します。
6. プロパティウィンドウの「エイリアス」にInputMan7を設定します。
7. 同じように、GrapeCity.Win.Editors.v70を選択して、「エイリアス」にInputMan7を設定します。
8. プロジェクトをビルドすると、正常にビルドが行われます。

プロジェクトでPlusPak6を使用している場合は、以下の参照に対してエイリアスの設定が必要になります。
  • GrapeCity.Framework.PlusPak.v22
  • GrapeCity.Win.PlusPak.Calendar.v70
  • GrapeCity.Win.PlusPak.v70
<注意>
上記の設定は、MultiRow7でInputManCell、PlusPakCellを使用していない場合に有効です。InputManCell、PlusPakCellを使用している場合は以下の設定も必要になります。

【InputMan7/PlusPak7を参照したい場合】
上記の回避方法を実施したプロジェクトで、MultiRow7のInputManCellとPlusPakCellを使用する場合は、エイリアスを使用して、InputManCellとPlusPakCellが明示的にInputMan7とPlusPak7のアセンブリを参照するように設定する必要があります。

この際は、下記の点にご注意ください。
  • プログラムの最初にexternキーワードを使用してエイリアスを宣言します。
    例:extern alias InputMan7;
  • コードでInputMan7やPlusPak7の型を参照する時名前空間の先頭にエイリアスを付けます。
    例:gcTextBoxCell1.DropDown.OpeningAnimation = InputMan7.GrapeCity.Win.Editors.DropDownAnimation.Slide;
また、以下のサンプルコードをご参考にしてください。

[C#]
extern alias InputMan7;

using System;
using System.Drawing;
using System.Windows.Forms;

using GrapeCity.Win.MultiRow;
using InputManCell = GrapeCity.Win.MultiRow.InputMan;


namespace WindowsFormsApplication2
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      // InputManCellの設定(InputMan7のアセンブリを参照)

      InputManCell.GcTextBoxCell gcTextBoxCell1 = new InputManCell.GcTextBoxCell();
      gcTextBoxCell1.Style.Multiline = MultiRowTriState.True;

      // 文字単位で改行するよう設定します。
      gcTextBoxCell1.WrapMode = InputMan7.GrapeCity.Win.Editors.WrapMode.CharWrap;

      // 点線で赤の罫線を表示するよう設定します。 
      gcTextBoxCell1.GridLine.Style = InputMan7.GrapeCity.Win.Editors.LineStyle.Dashed;
      gcTextBoxCell1.GridLine.Color = Color.Red;

      gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcTextBoxCell1 });

      // InputManの設定(InputMan6のアセンブリを参照)
      gcTextBox1.Multiline = true;

      // 文字単位で改行するよう設定します。
      gcTextBox1.WrapMode = GrapeCity.Win.Editors.WrapMode.CharWrap;

      // 点線で赤の罫線を表示するよう設定します。
      gcTextBox1.GridLine.Style = GrapeCity.Win.Editors.LineStyle.Dashed;
      gcTextBox1.GridLine.Color = Color.Red;
    }
  }
}


エイリアスの詳細につきましては、MSDNにある次の資料もご参考ください。

方法: グローバル名前空間エイリアスを使用する (C# プログラミング ガイド)

http://msdn.microsoft.com/ja-jp/library/vstudio/c3ay4x3d.aspx


extern エイリアス (C# リファレンス)

http://msdn.microsoft.com/ja-jp/library/vstudio/ms173212.aspx


【InputMan7/PlusPak7にアップグレードした場合】
プロジェクト内のInputManとPlusPakを既存の旧バージョンから7.0Jに移行する場合は、製品ヘルプにある「旧バージョンからの移行」を参考に製品の移行を行なってから、以下の変更を行う必要があります。

1. コード内のエイリアス修飾子を手動で削除する。
2. 参照設定のプロパティの「エイリアス」をglobalに設定する。


Visual Basicの場合
Visual Basicをご使用の場合は、エイリアスを定義する方法が使用できませんが、参照設定に追加されたInputMan7、PlusPak7の参照を手動で削除することで、この問題を回避することができます。

以下では、同じプロジェクトでMultiRow7とInputMan6のコントロールを併用するための手順例を説明します。

1. プロジェクトを新規作成します。
2. フォームにInputMan6のGcTextBoxを追加します。(例:gcTextBox1)
3. フォームにMultiRow7のGcMultiRowを追加します。(例:gcMultiRow1)
4. プロジェクトをビルドすると、InputManのアセンブリ参照で競合エラーが発生します。
5. ソリューションエクスプローラの「参照設定」から、以下の参照を削除します。
 ・GrapeCity.Framework.InputMan.v22
 ・GrapeCity.Win.Editors.v70 
6. プロジェクトをビルドすると、正常にビルドが行われます。

プロジェクトでPlusPak6を使用している場合は、以下の参照を削除する必要があります。

•GrapeCity.Framework.PlusPak.v22
•GrapeCity.Win.PlusPak.Calendar.v70
•GrapeCity.Win.PlusPak.v70

<注意>
この回避方法を使用する場合には、MultiRow7でInputManCellを使用することはできません。これは、MultiRow7のInputManCellがInputMan7のアセンブリを参照する必要があるためです。
関連情報