PowerTools SPREAD for Windows Forms 10.0J > 開発者ガイド > セル型 > InputManセル > GcComboBox型セル > 項目の設定(GcComboBox型セル) > コレクションに追加(GcComboBox型セル) |
ここでは、Items プロパティにコレクションを追加して項目を設定する方法について説明します。
コントロールのItems プロパティを使って項目を追加するには、Items プロパティが参照するListItemCollectionInfo に項目となるリストアイテム(ListItemInfo)のオブジェクトを追加します。
リストアイテムには、次の3つの要素を表示することができます。
GcComboBox型セルのShowListBoxImage プロパティをTrueに設定することで、 項目の先頭カラムに画像を表示することができます。この画像は、ListItemInfo クラスのImage プロパティで設定します。 Image プロパティには、表示する画像のインデックスを設定でき、このインデックスは、GcComboBox型セルのImageList プロパティに設定したSystem.Windows.Forms.ImageList オブジェクトのImages プロパティが参照するコレクションのインデックスです。
画像の配置、および幅は、それぞれImageAlign、およびImageWidth プロパティで設定します。
先頭カラムに表示する文字列は、ListItemInfo クラスのText プロパティで設定します。 単一カラムでGcComboBox型セルを使用するときは、Text プロパティに値を設定します。
リストボックスでマルチカラム表示を行う場合は、ListItemInfo クラスのSubItems プロパティを使用します。SubItems プロパティはSubItemCollectionInfo オブジェクトを参照し、サブアイテムを表す SubItemInfo オブジェクトのコレクションを保持します。
なお、ListItemInfo クラスと、そのSubItems プロパティに設定されたSubItemInfo オブジェクトとの間には、以下のような関係があります。
項目を追加するには、ListItemCollectionInfo クラスのAdd または、AddRange メソッドを使用します
次のサンプルコードでは、先頭カラムの文字列を指定してリスト項目を追加します。
C# |
コードのコピー
|
---|---|
gcComboBox1.Items.Add("項目1"); gcComboBox1.Items.Add("項目2"); gcComboBox1.Items.Add("項目3"); |
Visual Basic |
コードのコピー
|
---|---|
gcComboBox1.Items.Add("項目1") gcComboBox1.Items.Add("項目2") gcComboBox1.Items.Add("項目3") |
次のサンプルコードは、ListItem オブジェクトを生成して項目を追加します。
C# |
コードのコピー
|
---|---|
GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType gcComboBox1 = new GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType(); GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo item1 = new GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo(); item1.BackColor = Color.AliceBlue; item1.ForeColor = Color.Blue; item1.Text = "項目1"; GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo item2 = new GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo(); item2.BackColor = Color.AliceBlue; item2.ForeColor = Color.Blue; item2.Text = "項目2"; GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo item3 = new GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo(); item3.BackColor = Color.AliceBlue; item3.ForeColor = Color.Blue; item3.Text = "項目3"; gcComboBox1.Items.Add(item1); gcComboBox1.Items.Add(item2); gcComboBox1.Items.Add(item3); fpSpread1.Sheets[0].Cells[0, 0].CellType = gcComboBox1; |
Visual Basic |
コードのコピー
|
---|---|
Dim gcComboBox1 As New GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType() Dim item1 As New GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo() item1.BackColor = Color.AliceBlue item1.ForeColor = Color.Blue item1.Text = "項目1" Dim item2 As New GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo() item2.BackColor = Color.AliceBlue item2.ForeColor = Color.Blue item2.Text = "項目2" Dim item3 As New GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo() item3.BackColor = Color.AliceBlue item3.ForeColor = Color.Blue item3.Text = "項目3" gcComboBox1.Items.Add(item1) gcComboBox1.Items.Add(item2) gcComboBox1.Items.Add(item3) FpSpread1.Sheets(0).Cells(0, 0).CellType = gcComboBox1 |
項目を削除するには、ListItemCollectionInfo クラスのRemove やRemoveAt メソッドを使用します。すべての項目を削除する場合はClear メソッドを使用します。
サブアイテムを設定するには、ListItemInfo クラスのSubItems プロパティを使用します。1つのサブアイテムは、SubItemInfo オブジェクトで表され、SubItems プロパティが参照するSubItemCollectionInfo コレクションに保持されます。
サブアイテムに設定した項目は、ListColumns プロパティで設定されたカラムの数だけ表示することができます。つまり、サブ項目を追加してもカラムが追加されていないと、リストボックスはマルチカラムで表示されません。カラムの追加については、「カラムの設定(GcComboBox型セル)」を参照してください。
サブアイテムのテキストがカラムの幅に収まりきらないとき、省略文字を使って表すことができます。省略文字を表示する場合は、SubItemInfo クラスのEllipsis プロパティをTrueに設定します。
また、テキストは、カラムの幅に応じて文字を折り返して表示することもできます。
文字を折り返して表示するかどうかは、SubItemInfo クラスのWordWrap プロパティで設定します。
また、サブアイテムには、列単位でテキストまたは画像を表示することができます。どちらを表示するかはカラムによって決まり、ListColumnInfo クラスのDataDisplayType プロパティで設定します。
サブアイテムに表示する内容は、SubItemInfo クラスのValue プロパティで設定します。Value プロパティはObject 型で、値にはテキストもしくは表示するイメージ画像を設定します。
次のサンプルコードは、上図のように2列のカラムを表示し、項目にそれぞれ画像とテキストを表示する例を示します。
C# |
コードのコピー
|
---|---|
GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType gcComboBox1 = new GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType(); // カラムを作成 GrapeCity.Win.Spread.InputMan.CellType.ListColumnInfo listColumn1 = new GrapeCity.Win.Spread.InputMan.CellType.ListColumnInfo(GrapeCity.Win.Spread.InputMan.CellType.DataDisplayType.Image); listColumn1.Header.Text = "Image"; GrapeCity.Win.Spread.InputMan.CellType.ListColumnInfo listColumn2 = new GrapeCity.Win.Spread.InputMan.CellType.ListColumnInfo(GrapeCity.Win.Spread.InputMan.CellType.DataDisplayType.Text); listColumn2.Header.Text = "Text"; // カラムをリストボックスに設定 gcComboBox1.ListColumns.AddRange(new GrapeCity.Win.Spread.InputMan.CellType.ListColumnInfo[] { listColumn1, listColumn2 }); // サブアイテムを作成 GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo subItem1 = new GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo(); subItem1.Value = System.Drawing.Image.FromFile("C:\\GrapeCity.bmp"); GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo subItem2 = new GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo(); subItem2.Value = "GrapeCity"; GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo subItem3 = new GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo(); subItem3.Value = System.Drawing.Image.FromFile("C:\\InputMan.bmp"); GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo subItem4 = new GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo(); subItem4.Value = "InputMan"; // リストアイテムをコントロールに設定 gcComboBox1.Items.Add(new GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo(new GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo[] { subItem1, subItem2 })); gcComboBox1.Items.Add(new GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo(new GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo[] { subItem3, subItem4 })); fpSpread1.Sheets[0].Cells[0, 0].CellType = gcComboBox1; |
Visual Basic |
コードのコピー
|
---|---|
Dim gcComboBox1 As New GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType() ' カラムを作成 Dim listColumn1 As New GrapeCity.Win.Spread.InputMan.CellType.ListColumnInfo(GrapeCity.Win.Spread.InputMan.CellType.DataDisplayType.Image) listColumn1.Header.Text = "Image" Dim listColumn2 As New GrapeCity.Win.Spread.InputMan.CellType.ListColumnInfo(GrapeCity.Win.Spread.InputMan.CellType.DataDisplayType.Text) listColumn2.Header.Text = "Text" ' カラムをリストボックスに設定 gcComboBox1.ListColumns.AddRange(New GrapeCity.Win.Spread.InputMan.CellType.ListColumnInfo() {listColumn1, listColumn2}) ' サブアイテムを作成 Dim subItem1 As New GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo() subItem1.Value = System.Drawing.Image.FromFile("C:\GrapeCity.bmp") Dim subItem2 As New GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo() subItem2.Value = "GrapeCity" Dim subItem3 As New GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo() subItem3.Value = System.Drawing.Image.FromFile("C:\InputMan.bmp") Dim subItem4 As New GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo() subItem4.Value = "InputMan" ' リストアイテムをコントロールに設定 gcComboBox1.Items.Add(New GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo(New GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo() {subItem1, subItem2})) gcComboBox1.Items.Add(New GrapeCity.Win.Spread.InputMan.CellType.ListItemInfo(New GrapeCity.Win.Spread.InputMan.CellType.SubItemInfo() {subItem3, subItem4})) FpSpread1.Sheets(0).Cells(0, 0).CellType = gcComboBox1 |
カラムの既定値を設定できるデフォルトカラムと同様、サブアイテムも既定値を設定することができます。すべてのカラムに共通な設定はデフォルトサブアイテムで設定しておくことで、個々のサブアイテムへの設定が不要になり便利です。
サブアイテムの既定値は、DefaultListColumnInfo クラスのDefaultSubItem プロパティで設定します。DefaultSubItem プロパティは、DefaultSubItemInfo 型のオブジェクトで以下のプロパティを設定することができます。