InputManとPlusPakの旧バージョン(5.0J/6.0J)と同一プロジェクト内で共存させる方法
対象製品
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")を定義します。
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を使用している場合は、以下の参照に対してエイリアスの設定が必要になります。
上記の設定は、MultiRow7でInputManCell、PlusPakCellを使用していない場合に有効です。InputManCell、PlusPakCellを使用している場合は以下の設定も必要になります。
【InputMan7/PlusPak7を参照したい場合】
上記の回避方法を実施したプロジェクトで、MultiRow7のInputManCellとPlusPakCellを使用する場合は、エイリアスを使用して、InputManCellとPlusPakCellが明示的にInputMan7とPlusPak7のアセンブリを参照するように設定する必要があります。
この際は、下記の点にご注意ください。
[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# プログラミング ガイド)
extern エイリアス (C# リファレンス)
【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のアセンブリを参照する必要があるためです。
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
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のアセンブリを参照する必要があるためです。