SPREAD for WPF 4.0J - GcSpreadGrid
セル型とイベント
MESCIUS SPREAD for WPF 4.0J > 開発者ガイド > セル型 > セル型とイベント

セルに文字列を入力、チェックボックス型セルのチェックボックスをクリック、ラジオグループ型セルやコンボボックス型セルの項目を選択するといったユーザー操作により、発生するイベントはありません。

いずれのセル型においても、セルの編集が開始するとコントロールの次のイベントが発生します。

また、編集が終了すると次のイベントが発生します。

セル型による固有のユーザー操作は、EditElementShowing イベントで編集用コントロールを取得し、イベントをハンドルすることができます。また編集用コントロールに関連付けられたイベントは、CellEditEnding イベントで関連付けを解除します。

各セル型で編集用に使用されるコントロールについては「セル型と編集用コントロール」を参照してください。

サンプルコード

次のサンプルコードは、コンボボックス型セルで項目を選択したときと、チェックボックス型セルをクリックしたときに発生するイベントをハンドルします。

C#
コードのコピー
// セル型とイベントを関連付けます。
void gcSpreadGrid1_EditElementShowing(object sender, EditElementShowingEventArgs e)
{
    if (gcSpreadGrid1.ActiveCell.InheritedCellType is GrapeCity.Windows.SpreadGrid.ComboBoxCellType)
    {
        // コンボボックス型セルのイベントを関連付けます。
        GrapeCity.Windows.SpreadGrid.Editors.GcComboBox gccmb = gcSpreadGrid1.EditElement as GrapeCity.Windows.SpreadGrid.Editors.GcComboBox;
        if (gccmb != null)
        {
            gccmb.SelectionChanged += comboEdit_SelectionChanged;
        }
    }
    else if (gcSpreadGrid1.ActiveCell.InheritedCellType is GrapeCity.Windows.SpreadGrid.CheckBoxCellType)
    {
        // チェックボックス型セルのイベントを関連付けます。
        GrapeCity.Windows.SpreadGrid.Editors.CheckBoxEditElement gcchk = gcSpreadGrid1.EditElement as GrapeCity.Windows.SpreadGrid.Editors.CheckBoxEditElement;
        if (gcchk != null)
        {
            gcchk.Checked += checkEdit_Checked;
            gcchk.Unchecked += checkEdit_Unchecked;
        }
    }
}

// イベントの関連付けを解除します。
void gcSpreadGrid1_CellEditEnding(object sender, SpreadCellEditEndingEventArgs e)
{
    if (gcSpreadGrid1.ActiveCell.InheritedCellType is GrapeCity.Windows.SpreadGrid.ComboBoxCellType)
    {
        // コンボボックス型セルのイベント関連付けを解除します。
        GrapeCity.Windows.SpreadGrid.Editors.GcComboBox gccmb = gcSpreadGrid1.EditElement as GrapeCity.Windows.SpreadGrid.Editors.GcComboBox;
        if (gccmb != null)
        {
            gccmb.SelectionChanged -= comboEdit_SelectionChanged;
        }
    }
    else if (gcSpreadGrid1.ActiveCell.InheritedCellType is GrapeCity.Windows.SpreadGrid.CheckBoxCellType)
    {
        // チェックボックス型セルのイベント関連付けを解除します。
        GrapeCity.Windows.SpreadGrid.Editors.CheckBoxEditElement gcchk = gcSpreadGrid1.EditElement as GrapeCity.Windows.SpreadGrid.Editors.CheckBoxEditElement;
        if (gcchk != null)
        {
            gcchk.Checked -= checkEdit_Checked;
            gcchk.Unchecked -= checkEdit_Unchecked;
        }
    }
}

private void comboEdit_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Console.WriteLine("コンボボックス型セルの項目が選択されました。");
}
private void checkEdit_Checked(object sender, RoutedEventArgs e)
{
    Console.WriteLine("チェックボックス型セルがチェックされました。");
}
private void checkEdit_Unchecked(object sender, RoutedEventArgs e)
{
    Console.WriteLine("チェックボックス型セルがチェック解除されました。");
}
Visual Basic
コードのコピー
' セル型とイベントを関連付けます。
Private Sub GcSpreadGrid1_EditElementShowing(sender As Object, e As EditElementShowingEventArgs) Handles GcSpreadGrid1.EditElementShowing
    If TypeOf GcSpreadGrid1.ActiveCell.InheritedCellType Is GrapeCity.Windows.SpreadGrid.ComboBoxCellType Then
        ' コンボボックス型セルのイベントを関連付けます。
        Dim gccmb As GrapeCity.Windows.SpreadGrid.Editors.GcComboBox = TryCast(GcSpreadGrid1.EditElement, GrapeCity.Windows.SpreadGrid.Editors.GcComboBox)
        If Not gccmb Is Nothing Then
            AddHandler gccmb.SelectionChanged, AddressOf comboEdit_SelectionChanged
        End If
    ElseIf TypeOf GcSpreadGrid1.ActiveCell.InheritedCellType Is GrapeCity.Windows.SpreadGrid.CheckBoxCellType Then
       ' チェックボックス型セルのイベントを関連付けます。
       Dim gcchk As GrapeCity.Windows.SpreadGrid.Editors.CheckBoxEditElement = TryCast(GcSpreadGrid1.EditElement, GrapeCity.Windows.SpreadGrid.Editors.CheckBoxEditElement)
       If Not gcchk Is Nothing Then
            AddHandler gcchk.Checked, AddressOf checkEdit_Checked
            AddHandler gcchk.Unchecked, AddressOf checkEdit_Unchecked
       End If
    End If
End Sub

' イベント関連付けを解除します。
Private Sub GcSpreadGrid1_CellEditEnding(sender As Object, e As SpreadCellEditEndingEventArgs) Handles GcSpreadGrid1.CellEditEnding
    If TypeOf GcSpreadGrid1(irow, icol).InheritedCellType Is GrapeCity.Windows.SpreadGrid.ComboBoxCellType Then
        ' コンボボックス型セルのイベントの関連付けを解除ます。
        Dim gccmb As GrapeCity.Windows.SpreadGrid.Editors.GcComboBox = TryCast(GcSpreadGrid1.EditElement, GrapeCity.Windows.SpreadGrid.Editors.GcComboBox)
        If Not gccmb Is Nothing Then
            RemoveHandler gccmb.SelectionChanged, AddressOf comboEdit_SelectionChanged
        End If
    ElseIf TypeOf GcSpreadGrid1.ActiveCell.InheritedCellType Is GrapeCity.Windows.SpreadGrid.CheckBoxCellType Then
        ' チェックボックス型セルのイベントの関連付けを解除ます。
        Dim gcchk As GrapeCity.Windows.SpreadGrid.Editors.CheckBoxEditElement = TryCast(GcSpreadGrid1.EditElement, GrapeCity.Windows.SpreadGrid.Editors.CheckBoxEditElement)
        If Not gcchk Is Nothing Then
            RemoveHandler gcchk.Checked, AddressOf checkEdit_Checked
            RemoveHandler gcchk.Unchecked, AddressOf checkEdit_Unchecked
        End If
    End If
End Sub

Private Sub comboEdit_SelectionChanged(sender As Object, e As SelectionChangedEventArgs)
    Console.WriteLine("コンボボックス型セルの項目が選択されました。")
End Sub

Private Sub checkEdit_Checked(sender As Object, e As RoutedEventArgs)
    Console.WriteLine("チェックボックス型セルがチェックされました。")
End Sub

Private Sub checkEdit_Unchecked(sender As Object, e As RoutedEventArgs)
    Console.WriteLine("チェックボックス型セルがチェック解除されました。");
End Sub
関連トピック