コンボボックス型セルの主な機能は次のとおりです。
ユーザーによるコンボボックスの編集を有効にするには、 ComboBoxCellType クラスのIsEditable プロパティを True に設定します。既定では、コンボボックス型セルは、ユーザーが編集を開始すると開いているドロップダウン リストを閉じます。この動作は StaysOpenOnEdit プロパティで変更できます。
IsEditable プロパティに加えて、AutoSelect プロパティを True に設定すると、オートセレクト機能を利用することが可能です。
オートセレクト機能を有効にすると、コンボボックスに入力した場合、ドロップダウン リストが開き、入力したテキストに一致するアイテムが自動的に選択され、入力文字列が自動的に補完されます。
また、IsAutoSelectCaseSensitive プロパティで、アイテムを選択するときに大文字と小文字を区別するかどうかを設定することができます。
コンボボックス型セルをデータソースに連結し、項目のデータをデータソースから取得する方法と、データソースに非連結なデータを設定する方法があります。それぞれの方法について説明します。
ItemsSource プロパティにデータソースを設定します。項目の表示に使用するフィールドのNameを ContentPath プロパティに、項目が選択されたとき、セルの値として使用するフィールドのNameを SelectedValuePath プロパティに設定します。次のサンプルコードは、コンボボックス型セルを ProductCollection に連結します。
サンプルコードC# |
コードのコピー
|
---|---|
GrapeCity.Wpf.SpreadSheet.CellType.ComboBoxCellType comboBound = new GrapeCity.Wpf.SpreadSheet.CellType.ComboBoxCellType { ItemsSource = new ProductCollection(), ContentPath = "Name", SelectedValuePath = "ID" }; GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = comboBound; |
Visual Basic |
コードのコピー
|
---|---|
Dim comboBound As GrapeCity.Wpf.SpreadSheet.CellType.ComboBoxCellType = New GrapeCity.Wpf.SpreadSheet.CellType.ComboBoxCellType With { .ItemsSource = New ProductCollection(), .ContentPath = "Name", .SelectedValuePath = "ID" } GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = comboBound |
C# |
コードのコピー
|
---|---|
public class Product : System.ComponentModel.INotifyPropertyChanged { string id; string name; public string ID { set { id = value; NotifyPropertyChanged("ID"); } get { return id; } } public string Name { set { name = value; NotifyPropertyChanged("Name"); } get { return name; } } public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); } } internal class ProductCollection : System.Collections.ObjectModel.ObservableCollection<Product> { public ProductCollection() { Add(new Product() { ID = "CUPTNS0001", Name = "John Miller" }); Add(new Product() { ID = "CUPTND0002", Name = "Tom Martin" }); Add(new Product() { ID = "CUPTNF0003", Name = "Paul Walker" }); Add(new Product() { ID = "CUPSCO0004", Name = "Harry Shang" }); Add(new Product() { ID = "CUPSCA0005", Name = "Joe Jonas" }); } } |
Product および ProductCollection クラス(Visual Basic)
Visual Basic |
コードのコピー
|
---|---|
Public Class Product Implements System.ComponentModel.INotifyPropertyChanged Private id As String Private name As String Public Property ID As String Set(ByVal value As String) id = value NotifyPropertyChanged("ID") End Set Get Return id End Get End Property Public Property Name As String Set(ByVal value As String) name = value NotifyPropertyChanged("Name") End Set Get Return name End Get End Property Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Protected Sub NotifyPropertyChanged(ByVal propertyName As String) RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName)) End Sub End Class Friend Class ProductCollection Inherits System.Collections.ObjectModel.ObservableCollection(Of Product) Public Sub New() Add(New Product() With { .ID = "CUPTNS0001", .Name = "John Miller" }) Add(New Product() With { .ID = "CUPTND0002", .Name = "Tom Martin" }) Add(New Product() With { .ID = "CUPTNF0003", .Name = "Paul Walker" }) Add(New Product() With { .ID = "CUPSCO0004", .Name = "Harry Shang" }) Add(New Product() With { .ID = "CUPSCA0005", .Name = "Joe Jonas" }) End Sub End Class |
Items プロパティで項目のコレクションを参照し、Add メソッドで項目のデータを追加します。次のサンプルコードは、コンボボックス型セルにデータソースに非連結な項目を設定します。
サンプルコードC# |
コードのコピー
|
---|---|
GrapeCity.Wpf.SpreadSheet.CellType.ComboBoxCellType comboUnbound = new GrapeCity.Wpf.SpreadSheet.CellType.ComboBoxCellType(); comboUnbound.Items.Add("日本語"); comboUnbound.Items.Add("韓国語"); comboUnbound.Items.Add("中国語"); comboUnbound.Items.Add("ドイツ語"); comboUnbound.Items.Add("フランス語"); GcSpreadSheet.Workbook.ActiveSheet.Columns[2].CellType = comboUnbound; |
Visual Basic |
コードのコピー
|
---|---|
Dim comboUnbound As GrapeCity.Wpf.SpreadSheet.CellType.ComboBoxCellType = New GrapeCity.Wpf.SpreadSheet.CellType.ComboBoxCellType() comboUnbound.Items.Add("日本語") comboUnbound.Items.Add("韓国語") comboUnbound.Items.Add("中国語") comboUnbound.Items.Add("ドイツ語") comboUnbound.Items.Add("フランス語") GcSpreadSheet.Workbook.ActiveSheet.Columns(2).CellType = comboUnbound |
項目がデータソースに連結されている場合、SelectedValuePath プロパティで設定したフィールドの値がセルの値となります。コンボボックス型セルがデータソースに非連結な場合、項目に表示された文字列がセルの値となります。なお、この設定は ValueType プロパティで変更できます。
SpinButtonVisibility プロパティで項目を送る、または戻すためのスピンボタンを表示できます。