InputManとPlusPakの旧バージョン(5.0J/6.0J/7.0J)と同一プロジェクト内で共存させる方法
対象製品
MultiRow for Windows Forms 8.0J
詳細
MultiRow for Windows Forms 8.0J(以下、MultiRow8)では、InputManCellを使用するために、InputMan for Windows Forms 8.0J(以下、InputMan8)のアセンブリを参照する必要があります。同じように、MultiRow8でPlusPakCellを使用するには、PlusPak for Windows Forms 8.0J(以下、PlusPak8)のアセンブリを参照する必要があります。
MultiRow8では、InputManCellとPlusPakCellを標準機能として提供しているため、MultiRow8のGcMultiRowコントロールをフォームに追加した場合や、MultiRowテンプレートにInputManCellやPlusPakCellを追加した場合には、プロジェクトの参照設定にInputMan8とPlusPak8のアセンブリが自動で追加されます。
そのため、同一プロジェクト内でInputMan for Windows Forms 5.0J/6.0J/7.0JやPlusPak for Windows Forms 5.0J/6.0J/7.0Jのコントロールを使用している場合には、名前空間が同じ複数のバージョンのアセンブリを参照することになり、プロジェクトのビルド時にアセンブリ参照で名前空間の競合エラーが発生します。
この問題を回避する方法は、C#とVisual Basicでそれぞれ異なります。
詳細については、以下の項目をご確認ください。
C#の場合
エイリアスを定義する方法で回避することができます。
【競合を回避する方法】
プロジェクトの参照設定で下記の参照に対して、プロパティウィンドウから「エイリアス」に任意の修飾子(例えば、"InputMan8")を定義します。
以下では、同じプロジェクトでMultiRow8とInputMan7のコントロールを併用する場合の設定方法の例を説明します。
1. プロジェクトを新規作成します。
2. フォームにInputMan7のGcTextBoxを追加します。(例:gcTextBox1)
3. フォームにMultiRow8のGcMultiRowを追加します。(例:cMultiRow1)
4. プロジェクトをビルドすると、InputManのアセンブリ参照で競合エラーが発生します。
5. ソリューションエクスプローラの「参照設定」から、GrapeCity.Framework.InputMan.v23を選択します。
6. プロパティウィンドウの「エイリアス」にInputMan8を設定します。
7. 同じように、GrapeCity.Win.Editors.v80を選択して、「エイリアス」にInputMan8を設定します。
8. プロジェクトをビルドすると、正常にビルドが行われます。
プロジェクトでPlusPak7を使用している場合は、以下の参照に対してエイリアスの設定が必要になります。
上記の設定は、MultiRow8でInputManCell、PlusPakCellを使用していない場合に有効です。InputManCell、PlusPakCellを使用している場合は以下の設定も必要になります。
【InputMan8/PlusPak8を参照したい場合】
上記の回避方法を実施したプロジェクトで、MultiRow8のInputManCellとPlusPakCellを使用する場合は、エイリアスを使用して、InputManCellとPlusPakCellが明示的にInputMan8とPlusPak8のアセンブリを参照するように設定する必要があります。
この際は、下記の点にご注意ください。
[C#]
extern alias InputMan8;
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の設定(InputMan8のアセンブリを参照)
InputManCell.GcTextBoxCell gcTextBoxCell1 = new InputManCell.GcTextBoxCell();
gcTextBoxCell1.Style.Multiline = MultiRowTriState.True;
// 文字単位で改行するよう設定します。
gcTextBoxCell1.WrapMode = InputMan8.GrapeCity.Win.Editors.WrapMode.CharWrap;
// 点線で赤の罫線を表示するよう設定します。
gcTextBoxCell1.GridLine.Style = InputMan8.GrapeCity.Win.Editors.LineStyle.Dashed;
gcTextBoxCell1.GridLine.Color = Color.Red;
gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcTextBoxCell1 });
// InputManの設定(InputMan7のアセンブリを参照)
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# プログラミング ガイド)
extern エイリアス (C# リファレンス)
【InputMan8/PlusPak8にアップグレードした場合】
プロジェクト内のInputManとPlusPakを既存の旧バージョンから8.0Jに移行する場合は、製品ヘルプにある「移行について」を参考に製品の移行を行なってから、以下の変更を行う必要があります。
1. コード内のエイリアス修飾子を手動で削除する。
2. 参照設定のプロパティの「エイリアス」をglobalに設定する。
Visual Basicの場合
Visual Basicをご使用の場合は、エイリアスを定義する方法が使用できませんが、参照設定に追加されたInputMan8、PlusPak8の参照を手動で削除することで、この問題を回避することができます。
以下では、同じプロジェクトでMultiRow8とInputMan7のコントロールを併用するための手順例を説明します。
1. プロジェクトを新規作成します。
2. フォームにInputMan7のGcTextBoxを追加します。(例:gcTextBox1)
3. フォームにMultiRow8のGcMultiRowを追加します。(例:gcMultiRow1)
4. プロジェクトをビルドすると、InputManのアセンブリ参照で競合エラーが発生します。
5. ソリューションエクスプローラの「参照設定」から、以下の参照を削除します。
・GrapeCity.Framework.InputMan.v23
・GrapeCity.Win.Editors.v80
6. プロジェクトをビルドすると、正常にビルドが行われます。
プロジェクトでPlusPak7を使用している場合は、以下の参照を削除する必要があります。
•GrapeCity.Framework.PlusPak.v23
•GrapeCity.Win.PlusPak.Calendar.v80
•GrapeCity.Win.PlusPak.v80
<注意>
この回避方法を使用する場合には、MultiRow8でInputManCellを使用することはできません。これは、MultiRow8のInputManCellがInputMan8のアセンブリを参照する必要があるためです。また、PlusPakCellについても同様です。
MultiRow8では、InputManCellとPlusPakCellを標準機能として提供しているため、MultiRow8のGcMultiRowコントロールをフォームに追加した場合や、MultiRowテンプレートにInputManCellやPlusPakCellを追加した場合には、プロジェクトの参照設定にInputMan8とPlusPak8のアセンブリが自動で追加されます。
そのため、同一プロジェクト内でInputMan for Windows Forms 5.0J/6.0J/7.0JやPlusPak for Windows Forms 5.0J/6.0J/7.0Jのコントロールを使用している場合には、名前空間が同じ複数のバージョンのアセンブリを参照することになり、プロジェクトのビルド時にアセンブリ参照で名前空間の競合エラーが発生します。
この問題を回避する方法は、C#とVisual Basicでそれぞれ異なります。
詳細については、以下の項目をご確認ください。
C#の場合
エイリアスを定義する方法で回避することができます。
【競合を回避する方法】
プロジェクトの参照設定で下記の参照に対して、プロパティウィンドウから「エイリアス」に任意の修飾子(例えば、"InputMan8")を定義します。
- GrapeCity.Framework.InputMan.v23
- GrapeCity.Framework.PlusPak.v23
- GrapeCity.Win.Editors.v80
- GrapeCity.Win.PlusPak.Calendar.v80
- GrapeCity.Win.PlusPak.v80
以下では、同じプロジェクトでMultiRow8とInputMan7のコントロールを併用する場合の設定方法の例を説明します。
1. プロジェクトを新規作成します。
2. フォームにInputMan7のGcTextBoxを追加します。(例:gcTextBox1)
3. フォームにMultiRow8のGcMultiRowを追加します。(例:cMultiRow1)
4. プロジェクトをビルドすると、InputManのアセンブリ参照で競合エラーが発生します。
5. ソリューションエクスプローラの「参照設定」から、GrapeCity.Framework.InputMan.v23を選択します。
6. プロパティウィンドウの「エイリアス」にInputMan8を設定します。
7. 同じように、GrapeCity.Win.Editors.v80を選択して、「エイリアス」にInputMan8を設定します。
8. プロジェクトをビルドすると、正常にビルドが行われます。
プロジェクトでPlusPak7を使用している場合は、以下の参照に対してエイリアスの設定が必要になります。
- GrapeCity.Framework.PlusPak.v23
- GrapeCity.Win.PlusPak.Calendar.v80
- GrapeCity.Win.PlusPak.v80
上記の設定は、MultiRow8でInputManCell、PlusPakCellを使用していない場合に有効です。InputManCell、PlusPakCellを使用している場合は以下の設定も必要になります。
【InputMan8/PlusPak8を参照したい場合】
上記の回避方法を実施したプロジェクトで、MultiRow8のInputManCellとPlusPakCellを使用する場合は、エイリアスを使用して、InputManCellとPlusPakCellが明示的にInputMan8とPlusPak8のアセンブリを参照するように設定する必要があります。
この際は、下記の点にご注意ください。
- プログラムの最初にexternキーワードを使用してエイリアスを宣言します。
例:extern alias InputMan8;
- コードでInputMan8やPlusPak8の型を参照する際に名前空間の先頭にエイリアスを付けます。
例:gcTextBoxCell1.DropDown.OpeningAnimation = InputMan8.GrapeCity.Win.Editors.DropDownAnimation.Slide;
[C#]
extern alias InputMan8;
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の設定(InputMan8のアセンブリを参照)
InputManCell.GcTextBoxCell gcTextBoxCell1 = new InputManCell.GcTextBoxCell();
gcTextBoxCell1.Style.Multiline = MultiRowTriState.True;
// 文字単位で改行するよう設定します。
gcTextBoxCell1.WrapMode = InputMan8.GrapeCity.Win.Editors.WrapMode.CharWrap;
// 点線で赤の罫線を表示するよう設定します。
gcTextBoxCell1.GridLine.Style = InputMan8.GrapeCity.Win.Editors.LineStyle.Dashed;
gcTextBoxCell1.GridLine.Color = Color.Red;
gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcTextBoxCell1 });
// InputManの設定(InputMan7のアセンブリを参照)
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
【InputMan8/PlusPak8にアップグレードした場合】
プロジェクト内のInputManとPlusPakを既存の旧バージョンから8.0Jに移行する場合は、製品ヘルプにある「移行について」を参考に製品の移行を行なってから、以下の変更を行う必要があります。
1. コード内のエイリアス修飾子を手動で削除する。
2. 参照設定のプロパティの「エイリアス」をglobalに設定する。
Visual Basicの場合
Visual Basicをご使用の場合は、エイリアスを定義する方法が使用できませんが、参照設定に追加されたInputMan8、PlusPak8の参照を手動で削除することで、この問題を回避することができます。
以下では、同じプロジェクトでMultiRow8とInputMan7のコントロールを併用するための手順例を説明します。
1. プロジェクトを新規作成します。
2. フォームにInputMan7のGcTextBoxを追加します。(例:gcTextBox1)
3. フォームにMultiRow8のGcMultiRowを追加します。(例:gcMultiRow1)
4. プロジェクトをビルドすると、InputManのアセンブリ参照で競合エラーが発生します。
5. ソリューションエクスプローラの「参照設定」から、以下の参照を削除します。
・GrapeCity.Framework.InputMan.v23
・GrapeCity.Win.Editors.v80
6. プロジェクトをビルドすると、正常にビルドが行われます。
プロジェクトでPlusPak7を使用している場合は、以下の参照を削除する必要があります。
•GrapeCity.Framework.PlusPak.v23
•GrapeCity.Win.PlusPak.Calendar.v80
•GrapeCity.Win.PlusPak.v80
<注意>
この回避方法を使用する場合には、MultiRow8でInputManCellを使用することはできません。これは、MultiRow8のInputManCellがInputMan8のアセンブリを参照する必要があるためです。また、PlusPakCellについても同様です。