'宣言 Public Event ClipboardPasting As EventHandler(Of ClipboardPastingEventArgs)
public event EventHandler<ClipboardPastingEventArgs> ClipboardPasting
イベント ハンドラが、このイベントに関連するデータを含む、ClipboardPastingEventArgs 型の引数を受け取りました。次の ClipboardPastingEventArgs プロパティには、このイベントの固有の情報が記載されます。
このイベントは、関連付けられたセルを更新するために解析された値を提供するために使用できます。
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; } } }