すべてのセルの値をクリアするには?
対象製品
MultiRow for Windows Forms 7.0J
詳細
グリッドのすべてのセルの値をクリアするには、行数とセル数を元にすべてのセルに null (Visual Basic では Nothing) を設定します。
[Visual Basic]
[C#]
拡張メソッドとして実装する場合は次のようにコーディングします。
[Visual Basic]
[C#]
行の削除と追加によってセルの値をクリアするには、次のようにコーディングします。
[Visual Basic]
[C#]
ユーザーがセルを選択して[Del]キーを押した場合の操作をシミュレートするには、次のようにコーディングします。
[Visual Basic]
[C#]
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Dim gcMultiRow As GcMultiRow = Me.GcMultiRow1
For rowIndex As Integer = 0 To gcMultiRow.RowCount - 1
For cellIndex As Integer = 0 To gcMultiRow.Template.Row.Cells.Count - 1
If Not TypeOf gcMultiRow.Template.Row.Cells(cellIndex) Is HeaderCell Then
gcMultiRow.SetValue(rowIndex, cellIndex, Nothing)
End If
Next
Next
Dim gcMultiRow As GcMultiRow = Me.GcMultiRow1
For rowIndex As Integer = 0 To gcMultiRow.RowCount - 1
For cellIndex As Integer = 0 To gcMultiRow.Template.Row.Cells.Count - 1
If Not TypeOf gcMultiRow.Template.Row.Cells(cellIndex) Is HeaderCell Then
gcMultiRow.SetValue(rowIndex, cellIndex, Nothing)
End If
Next
Next
[C#]
using GrapeCity.Win.MultiRow;
GcMultiRow gcMultiRow = this.gcMultiRow1;
for (int rowIndex = 0; rowIndex < gcMultiRow.RowCount; rowIndex++)
{
for (int cellIndex = 0; cellIndex < gcMultiRow.Template.Row.Cells.Count; cellIndex++)
{
if (!(gcMultiRow.Template.Row[cellIndex] is HeaderCell))
gcMultiRow.SetValue(rowIndex, cellIndex, null);
}
}
GcMultiRow gcMultiRow = this.gcMultiRow1;
for (int rowIndex = 0; rowIndex < gcMultiRow.RowCount; rowIndex++)
{
for (int cellIndex = 0; cellIndex < gcMultiRow.Template.Row.Cells.Count; cellIndex++)
{
if (!(gcMultiRow.Template.Row[cellIndex] is HeaderCell))
gcMultiRow.SetValue(rowIndex, cellIndex, null);
}
}
拡張メソッドとして実装する場合は次のようにコーディングします。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Imports System.Runtime.CompilerServices
Public Module GcMultiRowExtension
<Extension()> _
Public Sub Clear(ByVal gcMultiRow As GcMultiRow)
Clear(gcMultiRow, AddressOf ClearWithoutHeaderCell)
End Sub
Private Function ClearWithoutHeaderCell(ByVal gcMultiRow As GcMultiRow, ByVal rowIndex As Integer, ByVal cellIndex As Integer) As Boolean
If Not TypeOf (gcMultiRow.Template.Row(cellIndex)) Is HeaderCell Then Return True
Return False
End Function
Public Delegate Function ClearConditionHandler(ByVal gcMultiRow As GcMultiRow, ByVal rowIndex As Integer, ByVal cellIndex As Integer) As Boolean
<Extension()> _
Public Sub Clear(ByVal gcMultiRow As GcMultiRow, ByVal condition As ClearConditionHandler)
For rowIndex As Integer = 0 To gcMultiRow.RowCount - 1
For cellIndex As Integer = 0 To gcMultiRow.Template.Row.Cells.Count - 1
If condition(gcMultiRow, rowIndex, cellIndex) Then
gcMultiRow.SetValue(rowIndex, cellIndex, Nothing)
End If
Next
Next
End Sub
End Module
' 呼び出し例1 : ヘッダ型セルを除くすべてのセルの値を null に設定する
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.GcMultiRow1.Clear()
End Sub
' 呼び出し例2 : 選択されたセルだけ消去する
'(ヘッダはSelectableではないので自動的に除外される。
' 行ヘッダセルが選択状態の場合はセルではなく行自体が選択されている。)
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.GcMultiRow1.Clear(AddressOf Me.ClearOnlySelectedCells)
End Sub
Private Function ClearOnlySelectedCells(ByVal gcMultiRow As GcMultiRow, ByVal rowIndex As Integer, ByVal cellIndex As Integer) As Boolean
If (gcMultiRow.GetInheritedState(rowIndex, cellIndex) And MultiRowElementStates.Selected) = MultiRowElementStates.Selected Then Return True
Return False
End Function
Imports System.Runtime.CompilerServices
Public Module GcMultiRowExtension
<Extension()> _
Public Sub Clear(ByVal gcMultiRow As GcMultiRow)
Clear(gcMultiRow, AddressOf ClearWithoutHeaderCell)
End Sub
Private Function ClearWithoutHeaderCell(ByVal gcMultiRow As GcMultiRow, ByVal rowIndex As Integer, ByVal cellIndex As Integer) As Boolean
If Not TypeOf (gcMultiRow.Template.Row(cellIndex)) Is HeaderCell Then Return True
Return False
End Function
Public Delegate Function ClearConditionHandler(ByVal gcMultiRow As GcMultiRow, ByVal rowIndex As Integer, ByVal cellIndex As Integer) As Boolean
<Extension()> _
Public Sub Clear(ByVal gcMultiRow As GcMultiRow, ByVal condition As ClearConditionHandler)
For rowIndex As Integer = 0 To gcMultiRow.RowCount - 1
For cellIndex As Integer = 0 To gcMultiRow.Template.Row.Cells.Count - 1
If condition(gcMultiRow, rowIndex, cellIndex) Then
gcMultiRow.SetValue(rowIndex, cellIndex, Nothing)
End If
Next
Next
End Sub
End Module
' 呼び出し例1 : ヘッダ型セルを除くすべてのセルの値を null に設定する
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.GcMultiRow1.Clear()
End Sub
' 呼び出し例2 : 選択されたセルだけ消去する
'(ヘッダはSelectableではないので自動的に除外される。
' 行ヘッダセルが選択状態の場合はセルではなく行自体が選択されている。)
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.GcMultiRow1.Clear(AddressOf Me.ClearOnlySelectedCells)
End Sub
Private Function ClearOnlySelectedCells(ByVal gcMultiRow As GcMultiRow, ByVal rowIndex As Integer, ByVal cellIndex As Integer) As Boolean
If (gcMultiRow.GetInheritedState(rowIndex, cellIndex) And MultiRowElementStates.Selected) = MultiRowElementStates.Selected Then Return True
Return False
End Function
[C#]
using GrapeCity.Win.MultiRow;
public static class GcMultiRowExtension
{
public static void Clear(this GcMultiRow gcMultiRow)
{
Clear(gcMultiRow, delegate(GcMultiRow gcMultiRow1, int rowIndex, int cellIndex)
{
if (!(gcMultiRow1.Template.Row[cellIndex] is HeaderCell)) return true;
return false;
});
}
public delegate bool ClearConditionHandler(GcMultiRow gcMultiRow, int rowIndex, int cellIndex);
public static void Clear(this GcMultiRow gcMultiRow, ClearConditionHandler condition)
{
for (int rowIndex = 0; rowIndex < gcMultiRow.RowCount; rowIndex++)
{
for (int cellIndex = 0; cellIndex < gcMultiRow.Template.Row.Cells.Count; cellIndex++)
{
if (condition(gcMultiRow, rowIndex, cellIndex))
{
gcMultiRow.SetValue(rowIndex, cellIndex, null);
}
}
}
}
}
// 呼び出し例1 : ヘッダ型セルを除くすべてのセルの値を null に設定する
this.gcMultiRow1.Clear();
// 呼び出し例2 : 選択されたセルだけ消去する
//(ヘッダはSelectableではないので自動的に除外される。
// 行ヘッダセルが選択状態の場合はセルではなく行自体が選択されている。)
this.gcMultiRow1.Clear(delegate(GcMultiRow gcMultiRow, int rowIndex, int cellIndex)
{
if ((gcMultiRow.GetInheritedState(rowIndex, cellIndex) & MultiRowElementStates.Selected) == MultiRowElementStates.Selected) return true;
return false;
});
public static class GcMultiRowExtension
{
public static void Clear(this GcMultiRow gcMultiRow)
{
Clear(gcMultiRow, delegate(GcMultiRow gcMultiRow1, int rowIndex, int cellIndex)
{
if (!(gcMultiRow1.Template.Row[cellIndex] is HeaderCell)) return true;
return false;
});
}
public delegate bool ClearConditionHandler(GcMultiRow gcMultiRow, int rowIndex, int cellIndex);
public static void Clear(this GcMultiRow gcMultiRow, ClearConditionHandler condition)
{
for (int rowIndex = 0; rowIndex < gcMultiRow.RowCount; rowIndex++)
{
for (int cellIndex = 0; cellIndex < gcMultiRow.Template.Row.Cells.Count; cellIndex++)
{
if (condition(gcMultiRow, rowIndex, cellIndex))
{
gcMultiRow.SetValue(rowIndex, cellIndex, null);
}
}
}
}
}
// 呼び出し例1 : ヘッダ型セルを除くすべてのセルの値を null に設定する
this.gcMultiRow1.Clear();
// 呼び出し例2 : 選択されたセルだけ消去する
//(ヘッダはSelectableではないので自動的に除外される。
// 行ヘッダセルが選択状態の場合はセルではなく行自体が選択されている。)
this.gcMultiRow1.Clear(delegate(GcMultiRow gcMultiRow, int rowIndex, int cellIndex)
{
if ((gcMultiRow.GetInheritedState(rowIndex, cellIndex) & MultiRowElementStates.Selected) == MultiRowElementStates.Selected) return true;
return false;
});
行の削除と追加によってセルの値をクリアするには、次のようにコーディングします。
[Visual Basic]
Dim count As Integer = GcMultiRow1.RowCount
GcMultiRow1.Rows.Clear()
GcMultiRow1.RowCount = count
GcMultiRow1.Rows.Clear()
GcMultiRow1.RowCount = count
[C#]
int count = gcMultiRow1.RowCount;
gcMultiRow1.Rows.Clear();
gcMultiRow1.RowCount = count;
gcMultiRow1.Rows.Clear();
gcMultiRow1.RowCount = count;
ユーザーがセルを選択して[Del]キーを押した場合の操作をシミュレートするには、次のようにコーディングします。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
SelectionActions.SelectAll.Execute(GcMultiRow1)
EditingActions.Clear.Execute(GcMultiRow1)
GcMultiRow1.ClearSelection()
GcMultiRow1.CurrentCell.Selected = True
SelectionActions.SelectAll.Execute(GcMultiRow1)
EditingActions.Clear.Execute(GcMultiRow1)
GcMultiRow1.ClearSelection()
GcMultiRow1.CurrentCell.Selected = True
[C#]
using GrapeCity.Win.MultiRow;
SelectionActions.SelectAll.Execute(gcMultiRow1);
EditingActions.Clear.Execute(gcMultiRow1);
gcMultiRow1.ClearSelection();
gcMultiRow1.CurrentCell.Selected = true;
SelectionActions.SelectAll.Execute(gcMultiRow1);
EditingActions.Clear.Execute(gcMultiRow1);
gcMultiRow1.ClearSelection();
gcMultiRow1.CurrentCell.Selected = true;