Visual Basic.NET - Problema con delegados

   
Vista:

Problema con delegados

Publicado por Juan Carlos Moreno (2 intervenciones) el 05/06/2009 03:13:18
Saludos Amigos

Agradezco de atemano su ayuda, tengo el siguiente problema: estoy tratando de desarrollar una librería, en la cual hay un método para dar formato automáticamente a una grilla, pasando como parámetro la misma. adicionalmente tengo otro método que permite configurar la posición (izquierda, derecha, centro) de los datos en cada una de las columnas de la grilla, lo que deseo hacer es crear un delegado a travez del evento CellFormatting de la grilla, mi problema está en cómo poder enviar como parámetro la grilla y el origen de datos, aquí una muestra del código:

Public Shared Sub ConfiguraGrilla(ByVal mCampos As String, ByVal mCabecera As String, ByVal mAnchoColumna As String, ByVal dgvGrilla As DataGridView, _
ByVal objDatos As Object)

mListaCampos = mCampos.Split(",")
mListaCabecera = mCabecera.Split(",")
mListaAnchoColumna = mAnchoColumna.Split(",")
mFuenteCabecera = My.Settings.CfgFontHeaderGrid
mColorCabecera = My.Settings.CfgColorHeaderGrid
mColorFuente = My.Settings.CfgColorHeaderForecolorGrid
mColorFondoGrid = My.Settings.CfgColorFondoGrid
mColorForeGrid = My.Settings.CfgColorForeGrid
mColorGridLinea = My.Settings.CfgColorGridLinea
dgvGrilla.AutoGenerateColumns = False
dgvGrilla.DataSource = objDatos
For I = 0 To mListaCampos.Length - 1
dgvGrilla.Columns.Add(mListaCampos(I), mListaCabecera(I))
dgvGrilla.Columns(I).DataPropertyName = mListaCampos(I)
dgvGrilla.Columns(I).Width = mListaAnchoColumna(I)
Next
dgvGrilla.ColumnHeadersDefaultCellStyle.BackColor = mColorCabecera
dgvGrilla.ColumnHeadersDefaultCellStyle.ForeColor = mColorFuente
dgvGrilla.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dgvGrilla.DefaultCellStyle.BackColor = mColorFondoGrid
dgvGrilla.DefaultCellStyle.ForeColor = mColorForeGrid
dgvGrilla.GridColor = mColorGridLinea
dgvGrilla.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
dgvGrilla.ColumnHeadersHeight = My.Settings.CfgColumnHeaderHeigth

AddHandler dgvGrilla.CellFormatting, AddressOf AlinearDatos

End Sub

Public Shared Sub AlinearDatos(ByVal sender As Object, ByVal e As _ System.Windows.Forms.DataGridViewCellFormattingEventArgs)
If e.ColumnIndex > -1 Then
If e.RowIndex > -1 Then
Dim Propiedad As PropertyInfo = ORIGENDEDATOS(e.RowIndex).GetType.GetProperty(GRILLA.Columns(e.ColumnIndex).Name)
If Propiedad.PropertyType.ToString = "System.Int8" Or Propiedad.PropertyType.ToString = "System.Int16" Or Propiedad.PropertyType.ToString = "System.Int32" Or Propiedad.PropertyType.ToString = "System.Decimal" Then
e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
e.CellStyle.Format = "n2"
End If
If Propiedad.PropertyType.ToString = "System.String" Then
e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
End If
End If
End If
End Sub

Muchas gracias!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder