'宣言 Public Class ClipboardPastingEventArgs Inherits ClipboardOperationEventArgs
public class ClipboardPastingEventArgs : ClipboardOperationEventArgs
Imports Infragistics.Windows.DataPresenter Imports System.Globalization Private Sub grid_ClipboardPasting(ByVal sender As System.Object, ByVal e As Infragistics.Windows.DataPresenter.Events.ClipboardPastingEventArgs) Dim dp As DataPresenterBase = DirectCast(sender, DataPresenterBase) Dim notPercentField As Field = dp.DefaultFieldLayout.Fields("NotPercent") Dim fldIndex As Integer = e.GetTargetFieldIndex(notPercentField) If fldIndex >= 0 Then Dim percentSymbol As String = CultureInfo.CurrentCulture.NumberFormat.PercentSymbol For i As Integer = 0 To e.RecordCount - 1 Dim cvh As CellValueHolder = e.Values(i, fldIndex) If Not cvh Is Nothing AndAlso cvh.IsDisplayText AndAlso Not String.IsNullOrEmpty(TryCast(cvh.Value, String)) Then Dim originalValue As String = cvh.Value.ToString() Dim newValue As String = originalValue.Replace(percentSymbol, String.Empty) ' if the source value had a percent... If newValue <> originalValue Then Dim value As Double ' parse the value without the % and divide by 100 If Double.TryParse(newValue, NumberStyles.Any, Nothing, value) Then cvh.Value = value / 100 cvh.IsDisplayText = False End If End If End If Next i End If End Sub Private Sub grid_ClipboardCopying(ByVal sender As System.Object, ByVal e As Infragistics.Windows.DataPresenter.Events.ClipboardCopyingEventArgs) Dim dp As DataPresenterBase = DirectCast(sender, DataPresenterBase) Dim notPercentField As Field = dp.DefaultFieldLayout.Fields("NotPercent") Dim fldIndex As Integer = e.GetSourceFieldIndex(notPercentField) ' the not percent field displays in exponential but to output the ' value in another format, we can change the value of the associated ' cell value holders If fldIndex >= 0 Then For i As Integer = 0 To e.RecordCount - 1 Dim cvh As CellValueHolder = e.Values(i, fldIndex) If Not cvh Is Nothing AndAlso Not cvh.IsDisplayText AndAlso TypeOf cvh.Value Is Double Then Dim dblValue As Double = CType(cvh.Value, Double) cvh.Value = dblValue.ToString("R") cvh.IsDisplayText = True End If Next End If End Sub Private Sub grid_InitializeRecord(ByVal sender As System.Object, ByVal e As Infragistics.Windows.DataPresenter.Events.InitializeRecordEventArgs) If Not e.ReInitialize Then Dim dr As DataRecord = TryCast(e.Record, DataRecord) If Not dr Is Nothing Then dr.Cells("NotPercent").Value = 0.25 dr.Cells("Percent").Value = 0.25 End If End If End Sub
using Infragistics.Windows.DataPresenter; using System.Globalization; private void grid_ClipboardPasting(object sender, Infragistics.Windows.DataPresenter.Events.ClipboardPastingEventArgs e) { DataPresenterBase dp = sender as DataPresenterBase; Field notPercentField = dp.DefaultFieldLayout.Fields["NotPercent"]; int fldIndex = e.GetTargetFieldIndex(notPercentField); if (fldIndex >= 0) { string percentSymbol = CultureInfo.CurrentCulture.NumberFormat.PercentSymbol; for (int i = 0, count = e.RecordCount; i < count; i++) { CellValueHolder cvh = e.Values[i, fldIndex]; if (null != cvh && cvh.IsDisplayText && !string.IsNullOrEmpty(cvh.Value as string)) { string originalValue = cvh.Value.ToString(); string newValue = originalValue.Replace(percentSymbol, string.Empty); // if the source value had a percent... if (newValue != originalValue) { double value; // parse the value without the % and divide by 100 if (double.TryParse(newValue, NumberStyles.Any, null, out value)) { cvh.Value = value / 100; cvh.IsDisplayText = false; } } } } } } private void grid_ClipboardCopying(object sender, Infragistics.Windows.DataPresenter.Events.ClipboardCopyingEventArgs e) { DataPresenterBase dp = sender as DataPresenterBase; Field notPercentField = dp.DefaultFieldLayout.Fields["NotPercent"]; int fldIndex = e.GetSourceFieldIndex(notPercentField); // the not percent field displays in exponential but to output the // value in another format, we can change the value of the associated // cell value holders if (fldIndex >= 0) { for (int i = 0, count = e.RecordCount; i < count; i++) { CellValueHolder cvh = e.Values[i, fldIndex]; if (null != cvh && !cvh.IsDisplayText && cvh.Value is double) { double dblValue = (double)cvh.Value; cvh.Value = dblValue.ToString("R"); cvh.IsDisplayText = true; } } } } private void grid_InitializeRecord(object sender, Infragistics.Windows.DataPresenter.Events.InitializeRecordEventArgs e) { if (!e.ReInitialize) { DataRecord dr = e.Record as DataRecord; if (null != dr) { dr.Cells["NotPercent"].Value = .25d; dr.Cells["Percent"].Value = .25d; } } }