DataGridView.CellValueNeeded Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ocorre quando a propriedade VirtualMode do controle DataGridView é true
e o DataGridView exige um valor para uma célula para formatá-la e exibi-la.
public:
event System::Windows::Forms::DataGridViewCellValueEventHandler ^ CellValueNeeded;
public event System.Windows.Forms.DataGridViewCellValueEventHandler CellValueNeeded;
public event System.Windows.Forms.DataGridViewCellValueEventHandler? CellValueNeeded;
member this.CellValueNeeded : System.Windows.Forms.DataGridViewCellValueEventHandler
Public Custom Event CellValueNeeded As DataGridViewCellValueEventHandler
Tipo de evento
Exemplos
O exemplo de código a seguir manipula o CellValueNeeded evento para preencher células com inteiros positivos. Este exemplo faz parte de um exemplo maior disponível no VirtualMode tópico de referência.
#pragma region Data store maintance
void VirtualConnector::dataGridView1_CellValueNeeded
(Object^ sender, DataGridViewCellValueEventArgs^ e)
{
if (store->ContainsKey(e->RowIndex))
{
// Use the store if the e value has been modified
// and stored.
e->Value = gcnew Int32(store->default[e->RowIndex]);
}
else if (newRowNeeded && e->RowIndex == numberOfRows)
{
if (dataGridView1->IsCurrentCellInEditMode)
{
e->Value = initialValue;
}
else
{
// Show a blank e if the cursor is just loitering
// over(the) last row.
e->Value = String::Empty;
}
}
else
{
e->Value = e->RowIndex;
}
}
void VirtualConnector::dataGridView1_CellValuePushed
(Object^ sender, DataGridViewCellValueEventArgs^ e)
{
String^ value = e->Value->ToString();
store[e->RowIndex] = Int32::Parse(value,
CultureInfo::CurrentCulture);
}
#pragma endregion
#region "data store maintance"
const int initialValue = -1;
private void dataGridView1_CellValueNeeded(object sender,
DataGridViewCellValueEventArgs e)
{
if (store.ContainsKey(e.RowIndex))
{
// Use the store if the e value has been modified
// and stored.
e.Value = store[e.RowIndex];
}
else if (newRowNeeded && e.RowIndex == numberOfRows)
{
if (dataGridView1.IsCurrentCellInEditMode)
{
e.Value = initialValue;
}
else
{
// Show a blank value if the cursor is just resting
// on the last row.
e.Value = String.Empty;
}
}
else
{
e.Value = e.RowIndex;
}
}
private void dataGridView1_CellValuePushed(object sender,
DataGridViewCellValueEventArgs e)
{
store.Add(e.RowIndex, int.Parse(e.Value.ToString()));
}
#endregion
private Dictionary<int, int> store = new Dictionary<int, int>();
#Region "data store maintance"
Const initialValue As Integer = -1
Private Sub dataGridView1_CellValueNeeded(ByVal sender As Object, _
ByVal e As DataGridViewCellValueEventArgs) _
Handles dataGridView1.CellValueNeeded
If store.ContainsKey(e.RowIndex) Then
' Use the store if the e value has been modified
' and stored.
e.Value = store(e.RowIndex)
ElseIf newRowNeeded AndAlso e.RowIndex = numberOfRows Then
If dataGridView1.IsCurrentCellInEditMode Then
e.Value = initialValue
Else
' Show a blank value if the cursor is just resting
' on the last row.
e.Value = String.Empty
End If
Else
e.Value = e.RowIndex
End If
End Sub
Private Sub dataGridView1_CellValuePushed(ByVal sender As Object, _
ByVal e As DataGridViewCellValueEventArgs) _
Handles dataGridView1.CellValuePushed
store.Add(e.RowIndex, CInt(e.Value))
End Sub
#End Region
Dim store As System.Collections.Generic.Dictionary(Of Integer, Integer) = _
New Dictionary(Of Integer, Integer)
Comentários
Use esse evento no modo virtual para preencher células com dados de um armazenamento de dados personalizado sem fazer com que as linhas se tornem não compartilhadas. Para obter mais informações sobre compartilhamento de linha, consulte Práticas recomendadas para colocação em escala do controle DataGridView dos Windows Forms. Para obter mais informações sobre o modo virtual, consulte Como implementar o modo virtual no controle DataGridView dos Windows Forms.
Para adicionar valores especificados pelo usuário ao armazenamento de dados personalizado, manipule o CellValuePushed evento.
Para obter mais informações sobre como lidar com eventos, consulte Manipulando e levantando eventos.
Aplica-se a
Confira também
- VirtualMode
- DataGridViewCellValueEventHandler
- DataGridViewCellValueEventArgs
- CellValuePushed
- OnCellValueNeeded(DataGridViewCellValueEventArgs)
- Práticas recomendadas para dimensionamento do controle DataGridView dos Windows Forms
- Modo virtual no controle DataGridView dos Windows Forms
- Controle DataGridView (Windows Forms)