作成日: 2022/10/14 最終更新日: 2022/10/14
文書種別
使用方法
詳細
FlexGridでは、クリップボードへのコピー操作は、C1FlexGridのAutoClipboardプロパティをTrueに設定するだけで可能になります。
グリッドの任意範囲をマウスで選択した後、 Ctrl+C または Ctrl+Ins を押下することで、選択範囲の内容がクリップボードにコピーされます。
このコピーの動作をコードで行うには、以下のいずれかの設定を行ってください。
(A) コードでセル範囲を選択してコピー
・グリッドの特定範囲を選択:C1FlexGridのSelectメソッドを使用
・選択範囲の内容を取得 :C1FlexGridのClipプロパティを使用
・クリップボードに貼り付け:ClipboardのSetDataObjectメソッドを使用
(設定例:部分コピー=セル範囲(1,1)~(2,2)をコピー)
(B) コードでセル範囲を指定してコピー
・グリッドの特定範囲を指定:C1FlexGridのGetCellRangeメソッドを使用
・指定範囲の内容を取得 :指定範囲のClipプロパティを使用
・クリップボードに貼り付け:ClipboardのSetDataObjectメソッドを使用
(設定例:全体コピー)
なお、クリップボードから文字列を取得するには、Clipboard.GetDataObjectメソッドを使用できます。
(設定例)クリップボードから文字列を取得し、TextBoxに貼り付ける場合
以下に、コード全体を記載します。

◎サンプルコード(VB)
グリッドの任意範囲をマウスで選択した後、 Ctrl+C または Ctrl+Ins を押下することで、選択範囲の内容がクリップボードにコピーされます。
このコピーの動作をコードで行うには、以下のいずれかの設定を行ってください。
(A) コードでセル範囲を選択してコピー
・グリッドの特定範囲を選択:C1FlexGridのSelectメソッドを使用
・選択範囲の内容を取得 :C1FlexGridのClipプロパティを使用
・クリップボードに貼り付け:ClipboardのSetDataObjectメソッドを使用
(設定例:部分コピー=セル範囲(1,1)~(2,2)をコピー)
c1FlexGrid1.Select(1, 1, 2, 2, false);
Object obj = c1FlexGrid1.Clip;
Clipboard.SetDataObject(obj, true);
(B) コードでセル範囲を指定してコピー
・グリッドの特定範囲を指定:C1FlexGridのGetCellRangeメソッドを使用
・指定範囲の内容を取得 :指定範囲のClipプロパティを使用
・クリップボードに貼り付け:ClipboardのSetDataObjectメソッドを使用
(設定例:全体コピー)
CellRange cr = c1FlexGrid1.GetCellRange(0, 0, c1FlexGrid1.Rows.Count - 1, c1FlexGrid1.Cols.Count - 1);
Object obj = cr.Clip;
Clipboard.SetDataObject(obj, true);
なお、クリップボードから文字列を取得するには、Clipboard.GetDataObjectメソッドを使用できます。
(設定例)クリップボードから文字列を取得し、TextBoxに貼り付ける場合
textBox1.Multiline = true;
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Text))
{
textBox1.Text = ((string)(data.GetData(DataFormats.Text)));
}
以下に、コード全体を記載します。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' グリッドの初期設定
For i = 0 To C1FlexGrid1.Rows.Count - 1
For j = 0 To C1FlexGrid1.Cols.Count - 1
C1FlexGrid1(i, j) = Convert.ToChar(64 + j).ToString + i.ToString()
Next
Next
C1FlexGrid1.AutoClipboard = True
End Sub
' 部分コピー
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
C1FlexGrid1.Select(1, 1, 2, 2, False)
Dim obj As Object = C1FlexGrid1.Clip
Clipboard.SetDataObject(obj, True)
End Sub
' 全体コピー
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim cr As CellRange = C1FlexGrid1.GetCellRange(0, 0, C1FlexGrid1.Rows.Count - 1, C1FlexGrid1.Cols.Count - 1)
Dim obj As Object = cr.Clip
Clipboard.SetDataObject(obj, True)
End Sub
' クリップボードから文字列を取得
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
TextBox1.Multiline = True
Dim data As IDataObject = Clipboard.GetDataObject()
If data.GetDataPresent(DataFormats.Text) Then
TextBox1.Text = CType(data.GetData(DataFormats.Text), String)
End If
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
namespace prj_C1FlexGrid_Clipboard
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; (i <= (c1FlexGrid1.Rows.Count - 1)); i++)
{
for (int j = 0; (j <= (c1FlexGrid1.Cols.Count - 1)); j++)
{
c1FlexGrid1[i, j] = (Convert.ToChar(64 + j).ToString() + i.ToString());
}
}
c1FlexGrid1.AutoClipboard = true;
}
// 部分コピー
private void Button1_Click(object sender, EventArgs e)
{
c1FlexGrid1.Select(1, 1, 2, 2, false);
Object obj = c1FlexGrid1.Clip;
Clipboard.SetDataObject(obj, true);
}
// 全体コピー
private void Button2_Click(object sender, EventArgs e)
{
CellRange cr = c1FlexGrid1.GetCellRange(0, 0, c1FlexGrid1.Rows.Count - 1, c1FlexGrid1.Cols.Count - 1);
Object obj = cr.Clip;
Clipboard.SetDataObject(obj, true);
}
// クリップボードから文字列を取得
private void Button3_Click(object sender, EventArgs e)
{
textBox1.Multiline = true;
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Text))
{
textBox1.Text = ((string)(data.GetData(DataFormats.Text)));
}
}
}
}