作成日: 2021/05/31 最終更新日:2021/05/31
文書種別
使用方法
詳細
C1FlexGridコントロール上のデータを、すべて他のC1FlexGridコントロールに移動するために、次の3通りの方法が考えられます。
(1)Cutメソッドを使用する
C1FlexGridのCutメソッドを使用すると、現在の選択内容がクリップボードに切り取られます。
そこで、グリッド全体を選択状態にしたのちCutメソッドを実行し、2番目のC1FlexGridのClipプロパティにクリップボードの文字列(列の区切りを示すタブ文字/行の区切りを示す改行文字を含む)を設定することで、すべてのデータを移動することができます。
◎サンプルコード(VB)
(2)Clipプロパティを使用したのち、1番目のC1FlexGridをクリアする
C1FlexGridのClipプロパティには、指定した範囲の全てのセルの文字列が含まれます(列の区切りを示すタブ文字/行の区切りを示す改行文字を含む)。
そこで、1番目のC1FlexGridのClipプロパティを2番目のC1FlexGridのClipプロパティに設定し、1番目のC1FlexGridをクリアすることで、すべてのデータを移動することができます。
※1番目のC1FlexGridをクリアしない場合、全データのコピーになります。
◎サンプルコード(VB)
(3)手動で値を直接コピーしたのち、1番目のC1FlexGridをクリアする
全行・全列を走査し、1番目のC1FlexGridの値を2番目のC1FlexGridに設定した後、1番目のC1FlexGridをクリアすることで、すべてのデータを移動することができます。
※1番目のC1FlexGridをクリアしない場合、全データのコピーになります。
◎サンプルコード(VB)
(1)Cutメソッドを使用する
C1FlexGridのCutメソッドを使用すると、現在の選択内容がクリップボードに切り取られます。
そこで、グリッド全体を選択状態にしたのちCutメソッドを実行し、2番目のC1FlexGridのClipプロパティにクリップボードの文字列(列の区切りを示すタブ文字/行の区切りを示す改行文字を含む)を設定することで、すべてのデータを移動することができます。
◎サンプルコード(VB)
Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
' c1FlexGrid2の設定
C1FlexGrid2.Rows.Count = C1FlexGrid1.Rows.Count
C1FlexGrid2.Cols.Count = C1FlexGrid1.Cols.Count
' ** Cutメソッドを使用 **
Dim cr1 As CellRange = New CellRange
cr1 = C1FlexGrid1.GetCellRange(1, 1, (C1FlexGrid1.Rows.Count - 1), (C1FlexGrid1.Cols.Count - 1))
C1FlexGrid1.Select(cr1)
C1FlexGrid1.Cut()
Dim cr2 As CellRange = New CellRange
cr2 = C1FlexGrid2.GetCellRange(1, 1, (C1FlexGrid1.Rows.Count - 1), (C1FlexGrid1.Cols.Count - 1))
cr2.Clip = Clipboard.GetText
' 全選択を解除
C1FlexGrid1.Select(1, 1, 1, 1)
End Sub
◎サンプルコード(C#)
private void button1_Click(object sender, EventArgs e)
{
// c1FlexGrid2の設定
c1FlexGrid2.Rows.Count = c1FlexGrid1.Rows.Count;
c1FlexGrid2.Cols.Count = c1FlexGrid1.Cols.Count;
// ** Cutメソッドを使用 **
CellRange cr1 = new CellRange();
cr1 = c1FlexGrid1.GetCellRange(1, 1, c1FlexGrid1.Rows.Count - 1, c1FlexGrid1.Cols.Count - 1);
c1FlexGrid1.Select(cr1);
c1FlexGrid1.Cut();
CellRange cr2 = new CellRange();
cr2 = c1FlexGrid2.GetCellRange(1, 1, c1FlexGrid1.Rows.Count - 1, c1FlexGrid1.Cols.Count - 1);
cr2.Clip = Clipboard.GetText();
// 全選択を解除
c1FlexGrid1.Select(1, 1, 1, 1);
}
(2)Clipプロパティを使用したのち、1番目のC1FlexGridをクリアする
C1FlexGridのClipプロパティには、指定した範囲の全てのセルの文字列が含まれます(列の区切りを示すタブ文字/行の区切りを示す改行文字を含む)。
そこで、1番目のC1FlexGridのClipプロパティを2番目のC1FlexGridのClipプロパティに設定し、1番目のC1FlexGridをクリアすることで、すべてのデータを移動することができます。
※1番目のC1FlexGridをクリアしない場合、全データのコピーになります。
◎サンプルコード(VB)
Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click
' c1FlexGrid2の設定
C1FlexGrid2.Rows.Count = C1FlexGrid1.Rows.Count
C1FlexGrid2.Cols.Count = C1FlexGrid1.Cols.Count
' ** Clipプロパティを使用 **
Dim i As Integer = 1
For i = 1 To C1FlexGrid1.Rows.Count - 1
C1FlexGrid1.Rows(i).Selected = True
Next
Dim cr1 As CellRange = New CellRange
cr1 = C1FlexGrid1.GetCellRange(1, 1, (C1FlexGrid1.Rows.Count - 1), (C1FlexGrid1.Cols.Count - 1))
Dim cr2 As CellRange = New CellRange
cr2 = C1FlexGrid2.GetCellRange(1, 1, (C1FlexGrid1.Rows.Count - 1), (C1FlexGrid1.Cols.Count - 1))
cr2.Clip = cr1.Clip
' 移動の場合:c1FlexGrid1のデータをクリア
C1FlexGrid1.Clear()
End Sub
◎サンプルコード(C#)
private void button2_Click(object sender, EventArgs e)
{
// c1FlexGrid2の設定
c1FlexGrid2.Rows.Count = c1FlexGrid1.Rows.Count;
c1FlexGrid2.Cols.Count = c1FlexGrid1.Cols.Count;
// ** Clipプロパティを使用 **
for (int i = 1; i < c1FlexGrid1.Rows.Count; i++)
{
c1FlexGrid1.Rows[i].Selected = true;
}
CellRange cr1 = new CellRange();
cr1 = c1FlexGrid1.GetCellRange(1, 1, c1FlexGrid1.Rows.Count - 1, c1FlexGrid1.Cols.Count - 1);
CellRange cr2 = new CellRange();
cr2 = c1FlexGrid2.GetCellRange(1, 1, c1FlexGrid1.Rows.Count - 1, c1FlexGrid1.Cols.Count - 1);
cr2.Clip = cr1.Clip;
// 移動の場合:c1FlexGrid1のデータをクリア
c1FlexGrid1.Clear();
}
(3)手動で値を直接コピーしたのち、1番目のC1FlexGridをクリアする
全行・全列を走査し、1番目のC1FlexGridの値を2番目のC1FlexGridに設定した後、1番目のC1FlexGridをクリアすることで、すべてのデータを移動することができます。
※1番目のC1FlexGridをクリアしない場合、全データのコピーになります。
◎サンプルコード(VB)
Private Sub button3_Click(sender As Object, e As EventArgs) Handles button3.Click
' c1FlexGrid2の設定
C1FlexGrid2.Rows.Count = C1FlexGrid1.Rows.Count
C1FlexGrid2.Cols.Count = C1FlexGrid1.Cols.Count
' ** 手動で値をコピー **
Dim i, j
For i = 1 To C1FlexGrid1.Rows.Count - 1
For j = 1 To C1FlexGrid1.Cols.Count - 1
C1FlexGrid2(i, j) = C1FlexGrid1(i, j)
Next
Next
' 移動の場合:c1FlexGrid1のデータをクリア
C1FlexGrid1.Clear()
End Sub
◎サンプルコード(C#)
private void button3_Click(object sender, EventArgs e)
{
// c1FlexGrid2の設定
c1FlexGrid2.Rows.Count = c1FlexGrid1.Rows.Count;
c1FlexGrid2.Cols.Count = c1FlexGrid1.Cols.Count;
// ** 手動で値をコピー **
for (var i = 1; i < c1FlexGrid1.Rows.Count; i++)
{
for (var j = 1; j < c1FlexGrid1.Cols.Count; j++)
{
c1FlexGrid2[i, j] = c1FlexGrid1[i, j];
}
}
// 移動の場合:c1FlexGrid1のデータをクリア
c1FlexGrid1.Clear();
}