ボタン型セルはセルにボタンを表示します。ButtonCellType クラスを使用して設定します。主な設定は次のとおりです。
デザイナを使用した設定方法については、「デザイナのダイアログ」をご覧ください。
次の図のようにボタンにテキストを表示する場合、Content プロパティを使用します。
サンプルコードC# |
コードのコピー
|
---|---|
ButtonCellType btn = new ButtonCellType(); btn.Content = "ボタン"; GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = btn; GcSpreadSheet.Workbook.ActiveSheet.Columns[0].ColumnWidth = 160; |
Visual Basic |
コードのコピー
|
---|---|
Dim btn As ButtonCellType = New ButtonCellType() btn.Content = "ボタン" GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = btn GcSpreadSheet.Workbook.ActiveSheet.Columns(0).ColumnWidth = 160 |
次の図のようにボタンにテキスト以外の内容を表示する場合、ContentTemplate プロパティにデータ テンプレートを設定します。
サンプルコードXAML |
コードのコピー
|
---|---|
<gss:GcSpreadSheet x:Name="GcSpreadSheet" Grid.Row="1" Margin="0,0,850,519"> <gss:GcSpreadSheet.Resources> <DataTemplate x:Key="MyContent"> <Path Stretch="Uniform" Fill="#FF000000" Data="F1 M 173.354,624.292L 173.354,594.078L 188.461,609.185M 177.738,583.325C 163.457,583.325 151.88,594.902 151.88,609.185C 151.88,623.468 163.457,635.044 177.738,635.044C 192.021,635.044 203.598,623.468 203.598,609.185C 203.598,594.902 192.021,583.325 177.738,583.325 Z "/> </DataTemplate> </gss:GcSpreadSheet.Resources> <gss:GcSpreadSheet.Sheets> <gss:SheetInfo RowCount="10" ColumnCount="5"> <gss:SheetInfo.Columns> <gss:ColumnInfo> <gss:ColumnInfo.CellType> <gss_CellType:ButtonCellType ContentTemplate="{StaticResource MyContent}" /> </gss:ColumnInfo.CellType> </gss:ColumnInfo> </gss:SheetInfo.Columns> </gss:SheetInfo> </gss:GcSpreadSheet.Sheets> </gss:GcSpreadSheet> |
xmlns:gss_CellType="clr-namespace:GrapeCity.Wpf.SpreadSheet.CellType;assembly=GrapeCity.Wpf.SpreadSheet.CellType"
ユーザーがボタンを押したときの処理は WPF のコマンドに実装します。実行時、コマンド パラメータにはボタンが押されたセルの情報を保存した CellCommandParameter が自動的に設定されます。そのため、開発者は CellCommandParameter の情報を使用してコマンドを実装できます。CellCommandParameter に設定される情報は次のとおりです。
CommandParameter の情報プロパティ | 説明 |
---|---|
Column | クリックされるボタンの列を取得します。 |
Row | クリックされるボタンの行を取得します。 |
CustomCommandParameter | コマンドに渡すパラメーターを取得または設定します。 |
Worksheet | クリックされるボタンのワークシートを取得します。 |
次のサンプルコードは、ボタンが押された行を削除する処理を MyDeleteCommand クラスに実装します。
サンプルコードC# |
コードのコピー
|
---|---|
ButtonCellType btn = new ButtonCellType(); btn.Content = "削除"; btn.Command = new MyDeleteCommand(GcSpreadSheet); btn.CustomCommandParameter = "Deleted"; GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = btn; GcSpreadSheet.Workbook.ActiveSheet.Columns[0].ColumnWidth = 100; GcSpreadSheet.Workbook.ActiveSheet.RowCount = 15; |
C# |
コードのコピー
|
---|---|
internal class MyDeleteCommand : ICommand { private GcSpreadSheet GcSpreadSheet; public MyDeleteCommand(GcSpreadSheet GcSpreadSheet) { this.GcSpreadSheet = GcSpreadSheet; } public event EventHandler CanExecuteChanged; public bool CanExecute(object parameter) { return true; } public void OnCanExecuteChanged() { CanExecuteChanged?.Invoke(this, EventArgs.Empty); } public void Execute(object parameter) { if (parameter is CellCommandParameter cellCommandParameter) { GcSpreadSheet.Workbook.ActiveSheet.RemoveRows(cellCommandParameter.Row, 1); MessageBox.Show(string.Format("Row {0} '{2}'", cellCommandParameter.Row, null, cellCommandParameter.CustomCommandParameter)); } } } |
Visual Basic |
コードのコピー
|
---|---|
Dim btn As ButtonCellType = New ButtonCellType() btn.Content = "削除" btn.Command = New MyDeleteCommand(GcSpreadSheet) btn.CustomCommandParameter = "Deleted" GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = btn GcSpreadSheet.Workbook.ActiveSheet.Columns(0).ColumnWidth = 100 GcSpreadSheet.Workbook.ActiveSheet.RowCount = 15 |
Visual Basic |
コードのコピー
|
---|---|
Friend Class MyDeleteCommand Inherits ICommand Private GcSpreadSheet As GcSpreadSheet Public Sub New(ByVal GcSpreadSheet As GcSpreadSheet) Me.GcSpreadSheet = GcSpreadSheet End Sub Public Event CanExecuteChanged As EventHandler Public Function CanExecute(ByVal parameter As Object) As Boolean Return True End Function Public Sub OnCanExecuteChanged() CanExecuteChanged?.Invoke(Me, EventArgs.Empty) End Sub Public Sub Execute(ByVal parameter As Object) Dim cellCommandParameter As CellCommandParameter = Nothing If CSharpImpl.__Assign(cellCommandParameter, TryCast(parameter, CellCommandParameter)) IsNot Nothing Then GcSpreadSheet.Workbook.ActiveSheet.RemoveRows(cellCommandParameter.Row, 1) MessageBox.Show(String.Format("Row {0} '{2}'", cellCommandParameter.Row, Nothing, cellCommandParameter.CustomCommandParameter)) End If End Sub End Class |