4.0J以前のバージョンのコンボコントロールのDescriptionMember・DisplayMember・ValueMemberプロパティを実装する方法
対象製品
InputMan for Windows Forms 8.0J
詳細
InputMan for .NET 4.0J Windows Forms Ed. 以前のバージョンのマルチカラムの制限をなくし3列以上の表示を可能にしたことで、DescriptionMember、DisplayMember、およびValueMemberプロパティの実装方法が変更されました。同様の動作を実現するためには、下記を参考にしてください。
DescriptionMemberプロパティについて
InputMan for Windows Forms 8.0Jのコンボ・マスクコンボコントロールは、任意の数の列を設定でき、各列がデータソースのどのDataColumnに対応するかは、各列(ListColumnクラス)のDataPropertyNameプロパティで指定することができます。
DisplayMemberプロパティについて
DisplayMemberプロパティと同じ動作をさせるためには、TextSubItemIndexプロパティを利用します。TextSubItemIndexプロパティには、テキストボックス部に表示する項目の列のインデックスを指定します。また、TextSubItemIndexプロパティで指定した列は、SelectedTextプロパティで取得される値となります。
ValueMemberプロパティについて
ValueMemberプロパティと同じ動作は、ValueSubItemIndexプロパティを設定することで実現することが可能です。ValueSubItemIndexプロパティには、値として扱う項目の列のインデックスを指定します。また、ValueSubItemIndexプロパティで指定した列は、SelectedValueプロパティで取得される値となります。
以下はコンボコントロールに上記設定を行うサンプルコードです。
[Visual Basic]
[C#]
DescriptionMemberプロパティについて
InputMan for Windows Forms 8.0Jのコンボ・マスクコンボコントロールは、任意の数の列を設定でき、各列がデータソースのどのDataColumnに対応するかは、各列(ListColumnクラス)のDataPropertyNameプロパティで指定することができます。
DisplayMemberプロパティについて
DisplayMemberプロパティと同じ動作をさせるためには、TextSubItemIndexプロパティを利用します。TextSubItemIndexプロパティには、テキストボックス部に表示する項目の列のインデックスを指定します。また、TextSubItemIndexプロパティで指定した列は、SelectedTextプロパティで取得される値となります。
ValueMemberプロパティについて
ValueMemberプロパティと同じ動作は、ValueSubItemIndexプロパティを設定することで実現することが可能です。ValueSubItemIndexプロパティには、値として扱う項目の列のインデックスを指定します。また、ValueSubItemIndexプロパティで指定した列は、SelectedValueプロパティで取得される値となります。
以下はコンボコントロールに上記設定を行うサンプルコードです。
[Visual Basic]
Imports GrapeCity.Win.Editors ' データを作成します。 Dim dt As New DataTable("TEST") dt.Columns.Add("Name", GetType(String)) dt.Columns.Add("Value", GetType(String)) dt.Columns.Add("Code", GetType(Int32)) dt.Rows.Add("日本", "Japan", 81) dt.Rows.Add("中国", "China", 86) dt.Rows.Add("インド", "India", 91) dt.Rows.Add("ベトナム", "Vietnam", 84) dt.Rows.Add("アメリカ", "USA", 1) dt.AcceptChanges() ' コンボコントロールの設定 ' DataSourceプロパティが設定されたときにカラムを自動的に生成しないようにします。 GcComboBox1.AutoGenerateColumns = False ' カラムを設定します。 Dim lcName As New ListColumn("Name") lcName.DataPropertyName = "Name" lcName.Header.Text = "日本名" lcName.AutoWidth = True Dim lcValue As New ListColumn("Value") lcValue.DataPropertyName = "Value" lcValue.Header.Text = "English" lcValue.AutoWidth = True Dim lcCode As New ListColumn("Code") lcCode.DataPropertyName = "Code" lcCode.Header.Text = "国番号" lcCode.Width = 50 ' Codeを1番目、Nameを2番目、Valueを3番目とします GcComboBox1.ListColumns.AddRange(New ListColumn() {lcCode, lcName, lcValue}) ' テキスト部に使用され、SelectedTextプロパティで取得される ' カラムのインデックスを指定します。 GcComboBox1.TextSubItemIndex = 1 '<-- 1=Nameを設定しています。 ' SelectedValueプロパティで取得されるカラムのインデックスを指定します。 GcComboBox1.ValueSubItemIndex = 0 '<-- 0=Codeを設定しています。 ' データソースを設定します。 GcComboBox1.DataSource = dt ' ドロップダウンの大きさを調整します。 GcComboBox1.DropDown.Size = New Size(lcCode.Width + lcName.Width + lcValue.Width, GcComboBox1.DropDown.Size.Height)
[C#]
using GrapeCity.Win.Editors; // データを作成します。 DataTable dt = new DataTable("TEST"); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Value", typeof(string)); dt.Columns.Add("Code", typeof(Int32)); dt.Rows.Add("日本", "Japan", 81); dt.Rows.Add("中国", "China", 86); dt.Rows.Add("インド", "India", 91); dt.Rows.Add("ベトナム", "Vietnam", 84); dt.Rows.Add("アメリカ", "USA", 1); dt.AcceptChanges(); // コンボコントロールの設定 // DataSourceプロパティが設定されたときにカラムを自動的に生成しないようにします。 gcComboBox1.AutoGenerateColumns = false; // カラムを設定します。 ListColumn lcName = new ListColumn("Name"); lcName.DataPropertyName = "Name"; lcName.Header.Text = "日本名"; lcName.AutoWidth = true; ListColumn lcValue = new ListColumn("Value"); lcValue.DataPropertyName = "Value"; lcValue.Header.Text = "English"; lcValue.AutoWidth = true; ListColumn lcCode = new ListColumn("Code"); lcCode.DataPropertyName = "Code"; lcCode.Header.Text = "国番号"; lcCode.Width = 50; // Codeを1番目、Nameを2番目、Valueを3番目とします gcComboBox1.ListColumns.AddRange(new ListColumn[] { lcCode, lcName, lcValue }); // テキスト部に使用され、SelectedTextプロパティで取得される // カラムのインデックスを指定します。 gcComboBox1.TextSubItemIndex = 1; //<-- 1=Nameを設定しています。 // SelectedValueプロパティで取得されるカラムのインデックスを指定します。 gcComboBox1.ValueSubItemIndex = 0; //<-- 0=Codeを設定しています。 // データソースを設定します。 gcComboBox1.DataSource = dt; // ドロップダウンの大きさを調整します。 gcComboBox1.DropDown.Size = new Size(lcCode.Width + lcName.Width + lcValue.Width, gcComboBox1.DropDown.Size.Height);