2012-04-24 3 views
0

私はsyncfusionグリッドコントロールのコピー貼り付けを行っています。フォーマットでデータにアクセスするクリップボード

私の質問はsyncfusion

ABTよりペーストABT以上で私のデータは、選択した行、列の数に応じて、日時-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'); 
...} 

のために私のコードです。私がカスタムフォーマットをしたら助けになるだろうか? また、列に基づいてクリップボードデータにアクセスする必要があります。イベントClipboardCanPasteを通じてグリッドに貼り付けながら、日

答えて

0

あなたは、クリップボードのデータを検証することができます

感謝。

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); 
} 
関連する問題