Como: Personalizar a formatação de dados no Windows Forms DataGridView Control
O exemplo de código a seguir demonstra como implementar um manipulador para o DataGridView.CellFormatting evento que as alterações como células são exibidas dependendo de suas colunas e valores.
Células na Balance coluna que contêm números negativos recebem um plano de fundo vermelho. Você também pode formatar essas células como moeda para exibir valores negativos entre parênteses. Para obter mais informações, consulte Como: Formatar dados no Windows Forms DataGridView Control.
Células na Priority coluna exibir imagens no lugar dos valores de célula textual correspondente. O Value propriedade da DataGridViewCellFormattingEventArgs é usado para obter o valor da célula textual e para definir o valor da exibição correspondente do imagem.
Exemplo
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Private WithEvents dataGridView1 As New DataGridView()
Private highPriImage As Bitmap
Private mediumPriImage As Bitmap
Private lowPriImage As Bitmap
Public Sub New()
' Initialize the images.
Try
highPriImage = New Bitmap("highPri.bmp")
mediumPriImage = New Bitmap("mediumPri.bmp")
lowPriImage = New Bitmap("lowPri.bmp")
Catch ex As ArgumentException
MessageBox.Show("The Priority column requires Bitmap images" & _
"named highPri.bmp, mediumPri.bmp, and lowPri.bmp " & _
"residing in the same directory as the executable file.")
End Try
' Initialize the DataGridView.
With dataGridView1
.Dock = DockStyle.Fill
.AllowUserToAddRows = False
.Columns.AddRange( _
New DataGridViewTextBoxColumn(), _
New DataGridViewImageColumn())
.Columns(0).Name = "Balance"
.Columns(1).Name = "Priority"
.Rows.Add("-100", "high")
.Rows.Add("0", "medium")
.Rows.Add("100", "low")
End With
Me.Controls.Add(dataGridView1)
End Sub
' Changes how cells are displayed depending on their columns and values.
Private Sub dataGridView1_CellFormatting(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) _
Handles dataGridView1.CellFormatting
' Set the background to red for negative values in the Balance column.
If dataGridView1.Columns(e.ColumnIndex).Name.Equals("Balance") Then
'Dim intValue As Int32
If CInt(e.Value) < 0 Then
'if Int32.TryParse((String)e.Value, out intValue) &&
' (intValue < 0))
e.CellStyle.BackColor = Color.Red
e.CellStyle.SelectionBackColor = Color.DarkRed
End If
End If
' Replace string values in the Priority column with images.
If dataGridView1.Columns(e.ColumnIndex).Name.Equals("Priority") Then
' Ensure that the value is a string.
Dim stringValue As String = TryCast(e.Value, String)
If stringValue Is Nothing Then Return
' Set the cell ToolTip to the text value.
Dim cell As DataGridViewCell = _
dataGridView1(e.ColumnIndex, e.RowIndex)
cell.ToolTipText = stringValue
' Replace the string value with the image value.
Select Case stringValue
Case "high"
e.Value = highPriImage
Case "medium"
e.Value = mediumPriImage
Case "low"
e.Value = lowPriImage
End Select
End If
End Sub
Public Sub Main()
Application.Run(New Form1())
End Sub
End Class
using System;
using System.Drawing;
using System.Windows.Forms;
public class Form1 : Form
{
private DataGridView dataGridView1 = new DataGridView();
private Bitmap highPriImage;
private Bitmap mediumPriImage;
private Bitmap lowPriImage;
public Form1()
{
// Initialize the images.
try
{
highPriImage = new Bitmap("highPri.bmp");
mediumPriImage = new Bitmap("mediumPri.bmp");
lowPriImage = new Bitmap("lowPri.bmp");
}
catch (ArgumentException)
{
MessageBox.Show("The Priority column requires Bitmap images " +
"named highPri.bmp, mediumPri.bmp, and lowPri.bmp " +
"residing in the same directory as the executable file.");
}
// Initialize the DataGridView.
dataGridView1.Dock = DockStyle.Fill;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.Columns.AddRange(
new DataGridViewTextBoxColumn(),
new DataGridViewImageColumn());
dataGridView1.Columns[0].Name = "Balance";
dataGridView1.Columns[1].Name = "Priority";
dataGridView1.Rows.Add("-100", "high");
dataGridView1.Rows.Add("0", "medium");
dataGridView1.Rows.Add("100", "low");
dataGridView1.CellFormatting +=
new System.Windows.Forms.DataGridViewCellFormattingEventHandler(
this.dataGridView1_CellFormatting);
this.Controls.Add(dataGridView1);
}
// Changes how cells are displayed depending on their columns and values.
private void dataGridView1_CellFormatting(object sender,
System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
{
// Set the background to red for negative values in the Balance column.
if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Balance"))
{
Int32 intValue;
if (Int32.TryParse((String)e.Value, out intValue) &&
(intValue < 0))
{
e.CellStyle.BackColor = Color.Red;
e.CellStyle.SelectionBackColor = Color.DarkRed;
}
}
// Replace string values in the Priority column with images.
if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Priority"))
{
// Ensure that the value is a string.
String stringValue = e.Value as string;
if (stringValue == null) return;
// Set the cell ToolTip to the text value.
DataGridViewCell cell = dataGridView1[e.ColumnIndex, e.RowIndex];
cell.ToolTipText = stringValue;
// Replace the string value with the image value.
switch (stringValue)
{
case "high":
e.Value = highPriImage;
break;
case "medium":
e.Value = mediumPriImage;
break;
case "low":
e.Value = lowPriImage;
break;
}
}
}
public static void Main()
{
Application.Run(new Form1());
}
}
Compilando o código
Este exemplo requer:
Referências para as montagens (assemblys) do System, System.Drawing e System.Windows.Forms.
Bitmapimagens chamadas highPri.bmp, mediumPri.bmp, e lowPri.bmp residentes no mesmo diretório que o arquivo executável.
Para obter informações sobre como criar este exemplo a partir da linha de comando para Visual Basic ou Visual C#, consulte Compilando a partir da linha de comando (Visual Basic) ou Comando -<>>linha criando com CSC. exe. Você também pode construir este exemplo no Visual Studio colando o código em um novo projeto. Para obter mais informações, consulte Como: Compilar e executar um exemplo de código Windows Forms concluída usando Visual Studio e Como: Compilar e executar um exemplo de código Windows Forms concluída usando Visual Studio e Como: Compilar e executar um exemplo de código Windows Forms concluída usando Visual Studio e Como: Compilar e executar um exemplo de código de formulários Windows concluída usando o Visual Studio e Como: Compilar e executar um exemplo de código de formulários de Windows completa usando Visual Studio e Como compilar e executar um exemplo de código dos Windows Forms concluído usando Visual Studio.
Consulte também
Tarefas
Como: Formatar dados no Windows Forms DataGridView Control
Referência
DataGridViewBand.DefaultCellStyle
Conceitos
Estilos de célula em que o controle DataGridView do Windows Forms
Formatação de dados no Windows Forms DataGridView Control