【问题标题】:clipboard accessing data in format剪贴板以格式访问数据
【发布时间】:2012-06-19 19:59:14
【问题描述】:

我正在为同步融合网格控件进行复制粘贴。

我的问题是粘贴而不是同步融合

我的数据采用 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');
...}

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

谢谢 孙

【问题讨论】:

    标签: c#


    【解决方案1】:

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

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

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

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      相关资源
      最近更新 更多