DataGridViewCell.EditedFormattedValue 属性

定义

获取该单元格的当前格式化值,而不考虑该单元格是否处于编辑模式,也不论是否尚未提交此值。Gets the current, formatted value of the cell, regardless of whether the cell is in edit mode and the value has not been committed.

public:
 property System::Object ^ EditedFormattedValue { System::Object ^ get(); };
[System.ComponentModel.Browsable(false)]
public object EditedFormattedValue { get; }
[<System.ComponentModel.Browsable(false)>]
member this.EditedFormattedValue : obj
Public ReadOnly Property EditedFormattedValue As Object

属性值

Object

DataGridViewCell 的当前格式化值。The current, formatted value of the DataGridViewCell.

属性

例外

包含该单元格的行是共享行。The row containing the cell is a shared row.

-或--or-

该单元格是列标题单元格。The cell is a column header cell.

ColumnIndex 小于 0,这表示该单元格为行标头单元格。ColumnIndex is less than 0, indicating that the cell is a row header cell.

格式化失败,这是由于 DataError 控件的 DataGridView 事件无处理程序或处理程序将 ThrowException 属性设置为 true 而引起的。Formatting failed and either there is no handler for the DataError event of the DataGridView control or the handler set the ThrowException property to true. 通常情况下,可将该异常对象强制转换为类型 FormatExceptionThe exception object can typically be cast to type FormatException.

示例

下面的代码示例演示如何使用 EditedFormattedValue 属性。The following code example demonstrates how to use the EditedFormattedValue property. 在此示例中, IsCurrentCellDirty 属性用于确定当前单元格的内容是否已编辑和未提交,如果该单元格已被修改,则使用所编辑的值。In this example, the IsCurrentCellDirty property is used to determine if the current cell's contents have been edited and not committed and, if the cell has been modified, the edited value is used. 此示例是事件中提供的一个更大示例的一部分 DataGridView.SelectionChangedThis example is part of a larger example available in the DataGridView.SelectionChanged event.

private void UpdateLabelText()
{
    int WithdrawalTotal = 0;
    int DepositTotal = 0;
    int SelectedCellTotal = 0;
    int counter;

    // Iterate through all the rows and sum up the appropriate columns.
    for (counter = 0; counter < (DataGridView1.Rows.Count);
        counter++)
    {
        if (DataGridView1.Rows[counter].Cells["Withdrawals"].Value
            != null)
        {
            if (DataGridView1.Rows[counter].
                Cells["Withdrawals"].Value.ToString().Length != 0)
            {
                WithdrawalTotal += int.Parse(DataGridView1.Rows[counter].
                    Cells["Withdrawals"].Value.ToString());
            }
        }

        if (DataGridView1.Rows[counter].Cells["Deposits"].Value != null)
        {
            if (DataGridView1.Rows[counter]
                .Cells["Deposits"].Value.ToString().Length != 0)
            {
                DepositTotal += int.Parse(DataGridView1.Rows[counter]
                    .Cells["Deposits"].Value.ToString());
            }
        }
    }

    // Iterate through the SelectedCells collection and sum up the values.
    for (counter = 0;
        counter < (DataGridView1.SelectedCells.Count); counter++)
    {
        if (DataGridView1.SelectedCells[counter].FormattedValueType ==
            Type.GetType("System.String"))
        {
            string value = null;

            // If the cell contains a value that has not been commited,
            // use the modified value.
            if (DataGridView1.IsCurrentCellDirty == true)
            {

                value = DataGridView1.SelectedCells[counter]
                    .EditedFormattedValue.ToString();
            }
            else
            {
                value = DataGridView1.SelectedCells[counter]
                    .FormattedValue.ToString();
            }
            if (value != null)
            {
                // Ignore cells in the Description column.
                if (DataGridView1.SelectedCells[counter].ColumnIndex !=
                    DataGridView1.Columns["Description"].Index)
                {
                    if (value.Length != 0)
                    {
                        SelectedCellTotal += int.Parse(value);
                    }
                }
            }
        }
    }

    // Set the labels to reflect the current state of the DataGridView.
    Label1.Text = "Withdrawals Total: " + WithdrawalTotal.ToString();
    Label2.Text = "Deposits Total: " + DepositTotal.ToString();
    Label3.Text = "Selected Cells Total: " + SelectedCellTotal.ToString();
    Label4.Text = "Total entries: " + DataGridView1.RowCount.ToString();
}
Private Sub UpdateLabelText()
    Dim WithdrawalTotal As Integer = 0
    Dim DepositTotal As Integer = 0
    Dim SelectedCellTotal As Integer = 0
    Dim counter As Integer

    ' Iterate through all the rows and sum up the appropriate columns.
    For counter = 0 To (DataGridView1.Rows.Count - 1)
        If Not DataGridView1.Rows(counter) _
            .Cells("Withdrawals").Value Is Nothing Then

            If Not DataGridView1.Rows(counter) _
                .Cells("Withdrawals").Value.ToString().Length = 0 Then

                WithdrawalTotal += _
                    Integer.Parse(DataGridView1.Rows(counter) _
                    .Cells("Withdrawals").Value.ToString())
            End If
        End If

        If Not DataGridView1.Rows(counter) _
            .Cells("Deposits").Value Is Nothing Then

            If Not DataGridView1.Rows(counter) _
                .Cells("Deposits").Value.ToString().Length = 0 Then

                DepositTotal += _
                    Integer.Parse(DataGridView1.Rows(counter) _
                    .Cells("Deposits").Value.ToString())
            End If
        End If
    Next

    ' Iterate through the SelectedCells collection and sum up the values.
    For counter = 0 To (DataGridView1.SelectedCells.Count - 1)
        If DataGridView1.SelectedCells(counter).FormattedValueType Is _
        Type.GetType("System.String") Then

            Dim value As String = Nothing

            ' If the cell contains a value that has not been commited,
            ' use the modified value.
            If (DataGridView1.IsCurrentCellDirty = True) Then

                value = DataGridView1.SelectedCells(counter) _
                    .EditedFormattedValue.ToString()
            Else

                value = DataGridView1.SelectedCells(counter) _
                    .FormattedValue.ToString()
            End If

            If value IsNot Nothing Then

                ' Ignore cells in the Description column.
                If Not DataGridView1.SelectedCells(counter).ColumnIndex = _
                    DataGridView1.Columns("Description").Index Then

                    If Not value.Length = 0 Then
                        SelectedCellTotal += Integer.Parse(value)
                    End If
                End If
            End If
        End If

    Next

    ' Set the labels to reflect the current state of the DataGridView.
    Label1.Text = "Withdrawals Total: " & WithdrawalTotal.ToString()
    Label2.Text = "Deposits Total: " & DepositTotal.ToString()
    Label3.Text = "Selected Cells Total: " & SelectedCellTotal.ToString()
    Label4.Text = "Total entries: " & DataGridView1.RowCount.ToString()
End Sub

注解

如果单元格处于编辑模式,则此属性将返回单元格或编辑控件的当前值。This property returns the current value of the cell or editing control if the cell is in edit mode. 否则,获取此属性的值会将单元值转换为属性指示的类型的等效显示值 FormattedValueTypeOtherwise, getting the value of this property converts the cell value into an equivalent display value of the type indicated by the FormattedValueType property. 这会引发 DataGridView.CellFormatting 事件,您可以处理该事件来自定义值转换。This raises the DataGridView.CellFormatting event, which you can handle to customize the value conversion.

如果格式设置不成功,则 DataGridView.DataError 会发生该事件。If formatting is unsuccessful, the DataGridView.DataError event occurs. 如果此事件没有处理程序,或者处理程序将属性设置 DataGridViewDataErrorEventArgs.ThrowExceptiontrue ,则会引发异常。If there is no handler for this event or the handler sets the DataGridViewDataErrorEventArgs.ThrowException property to true, an exception is thrown.

适用于

另请参阅