0

syncfusion グリッド コントロールのコピー アンド ペーストを行っています。

私の質問は、abt syncfusion よりも abt the paste です。

私のデータは、選択された行数、列数に応じて、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');
...}

クリップボードからグリッドに貼り付けられているこのデータを検証するにはどうすればよいですか。私がカスタムフォーマットをした場合、それは役に立ちますか?また、列に基づいてクリップボード データにアクセスする必要があります。

ありがとうサン

4

1 に答える 1

0

イベント 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);
}
于 2012-06-19T11:59:14.523 に答える