剪贴板以格式访问数据

时间:2012-04-24 16:59:35

标签: c#

我正在为syncfusion网格控件进行复制粘贴。

我的问题更多的是粘贴而不是abt syncfusion

我的数据是datetime-int,datetime-int ...格式,具体取决于行数,列数。 这是我的粘贴代码

private void theGrid_ClipboardPaste(object sender, GridCutPasteEventArgs e)
        {
 DataObject data = (DataObject)Clipboard.GetDataObject();
  try
            {

                if (data.GetDataPresent(DataFormats.Text))
                {
 rowsInClipboard =  stringInClipboard.Split('\n');
                    //split into cellvalues
                     for (int iRow = 0; iRow < rowsInClipboard.Length; iRow++)
                         ValuesInrows = rowsInClipboard[iRow].Split('\t');
...}

如何验证从剪贴板粘贴到网格的数据。如果我做了自定义格式会有所帮助吗? 我还需要根据列访问剪贴板数据。

由于 太阳

1 个答案:

答案 0 :(得分:0)

您可以通过事件ClipboardCanPaste粘贴到网格时验证剪贴板数据。

this.gridControl1.ClipboardCanPaste += new GridCutPasteEventHandler(gridControl1_ClipboardCanPaste); //get triggered before pasting occurs.

如果要访问剪贴板数据以跨列粘贴到网格,可以通过每个说明单个单元格内容之间的Tab键按空格来拆分相应的值。以下代码以格式化方式将网格单元格中的单元格内容复制到剪贴板,以便在从剪贴板粘贴到列顺序中的任何文本编辑器时使用此格式化文本。

private void CopyCellsToClipboard(GridRangeInfo range)
{
StringBuilder sb = new StringBuilder();

for (int i = range.Top; i <= range.Bottom; i++)
{
for (int j = range.Left; j <= range.Right; j++)
{
if (! (this.gridControl1.Cols.Hidden[j]))
{
sb.Append(this.gridControl1[i, j].FormattedText);
sb.Append("\t");
}
}
sb.AppendLine(System.Environment.NewLine);
}
string str = sb.ToString().Replace(System.Environment.NewLine + System.Environment.NewLine, System.Environment.NewLine);
DataObject db = new DataObject(DataFormats.UnicodeText, str);
Clipboard.SetDataObject(db);
}