dos dudas con el DataGridView

21/09/2009 - 12:16 por Juan | Informe spam
1) Me gustaría cambiar el color de las filas que se hayan modificado ¿Se
puede?
2) ¿Como puedo acceder al combobox de una celda desde el evento CellEnter?

Saludos

Preguntas similare

Leer las respuestas

#1 SoftJaén
22/09/2009 - 16:07 | Informe spam
"Juan" preguntó:

1) Me gustaría cambiar el color de las filas que se hayan modificado ¿Se
puede?



Claro que se puede: referencia la celda actual y asígnale el color que
deseas a la propiedad BackColor, por ejemplo, en el evento
EditingControlShowing del control DataGridView:

private void provinciasDataGridView_EditingControlShowing(
object sender, DataGridViewEditingControlShowingEventArgs e)
{
// Celda actual
DataGridViewCell cell = dataGridView1.CurrentCell;

// Modificamos su color de fondo
cell.Style.BackColor = Color.YellowGreen;

}

2) ¿Como puedo acceder al combobox de una celda desde el evento CellEnter?




Desde el evento CellEnter, ignoro en estos momento cómo puedes referenciar
el control ComboBox subyacente existente en la celda. Si fuera en el evento
EditingControlShowing, es fácil referenciarlo, porque la propiedad Control
del segundo parámetro del evento, precisamente te da el tipo de control.

No obstante, al ser la celda del tipo DataGridViewComboBoxColumn, puedes
referenciar el objeto DataGridViewComboBoxCell. Mira a ver si te sirve el
ejemplo:

private void dataGridView1_CellEnter(
object sender, DataGridViewCellEventArgs e)
{
// Solamente si la celda es del tipo DataGridViewComboBoxCell
//
if (dataGridView1.CurrentCell is DataGridViewComboBoxCell)
{
// Referenciamos el control DataGridViewComboBoxCell actual.
//
DataGridViewComboBoxCell cb (DataGridViewComboBoxCell) dataGridView1.CurrentCell;

// Obtenemos el elememento actualmente seleccionado.
//
MessageBox.Show(cb.Value.ToString());

}

}

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#2 Juan
22/09/2009 - 21:03 | Informe spam
Gracias. La segunda no me daba salido pues intentaba moldear a
DataGridViewComboBoxEditingControl.
En cuanto a la primera quería cambiar el color al modificar un campo. Pero
ya lo he solucionado. Lo pongo por si a alguien más le interesa o por si
exsiste algo mejor:

private void dataGridView1_RowValidated(object sender,
DataGridViewCellEventArgs e)
{
DataRow fila = ((DataRowView)bindingSource1.Current).Row;
if (fila.RowState == DataRowState.Modified ||
fila.RowState==DataRowState.Added)
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor =
Color.Aqua;
}



"SoftJaén" escribió en el mensaje de
noticias:
"Juan" preguntó:

1) Me gustaría cambiar el color de las filas que se hayan modificado ¿Se
puede?



Claro que se puede: referencia la celda actual y asígnale el color que
deseas a la propiedad BackColor, por ejemplo, en el evento
EditingControlShowing del control DataGridView:

private void provinciasDataGridView_EditingControlShowing(
object sender, DataGridViewEditingControlShowingEventArgs e)
{
// Celda actual
DataGridViewCell cell = dataGridView1.CurrentCell;

// Modificamos su color de fondo
cell.Style.BackColor = Color.YellowGreen;

}

2) ¿Como puedo acceder al combobox de una celda desde el evento
CellEnter?




Desde el evento CellEnter, ignoro en estos momento cómo puedes referenciar
el control ComboBox subyacente existente en la celda. Si fuera en el
evento EditingControlShowing, es fácil referenciarlo, porque la propiedad
Control del segundo parámetro del evento, precisamente te da el tipo de
control.

No obstante, al ser la celda del tipo DataGridViewComboBoxColumn, puedes
referenciar el objeto DataGridViewComboBoxCell. Mira a ver si te sirve el
ejemplo:

private void dataGridView1_CellEnter(
object sender, DataGridViewCellEventArgs e)
{
// Solamente si la celda es del tipo DataGridViewComboBoxCell
//
if (dataGridView1.CurrentCell is DataGridViewComboBoxCell)
{
// Referenciamos el control DataGridViewComboBoxCell
actual.
//
DataGridViewComboBoxCell cb > (DataGridViewComboBoxCell) dataGridView1.CurrentCell;

// Obtenemos el elememento actualmente seleccionado.
//
MessageBox.Show(cb.Value.ToString());

}

}

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o sugerido en el presente mensaje.


Respuesta Responder a este mensaje
#3 SoftJaén
23/09/2009 - 11:31 | Informe spam
"Juan" escribió:

La segunda no me daba salido pues intentaba moldear a
DataGridViewComboBoxEditingControl.



En mi mensaje anterior ya te indiqué que en el evento EditingControlShowing,
es más fácil referenciar el control ComboBox subyacente:

private void dataGridView1_EditingControlShowing(
object sender, DataGridViewEditingControlShowingEventArgs e)
{
// Solamente si la celda es del tipo DataGridViewComboBoxCell
//
if (dataGridView1.CurrentCell is DataGridViewComboBoxCell)
{
// Referenciamos el control ComboBox subyacente
// existente en la celda actual.
//
ComboBox cb = (ComboBox)e.Control;

// Obtenemos el elememento actualmente seleccionado.
//
MessageBox.Show(cb.Text);

}

}

Ahora bien, fuera de dicho evento, ignoro cómo puedes referenciarlo.

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida