Enabled en DataGridView

30/05/2008 - 23:54 por Michelle | Informe spam
Por que cuando se pone a false la propiedad Enabled de un datagridview no se
pone gris como los demas controles?

Preguntas similare

Leer las respuestas

#1 Michelle
01/06/2008 - 13:11 | Informe spam
Hola Luis Miguel y gracias por la ayuda.
Deja aprovecharte ya que son pocos los que conocen bien el uso del
Datagidview y la ayuda de msn no es muy clara.
a)Como se hace para en una misma columna tener dos tipos de controles
distintos de acuerdo a una condicion del registro?
b)Se puede inactivar una celda especifica, tambien de acuerdo a una
condicion ?
muchas gracias

"Luis Miguel Blanco" escribió
en el mensaje news:
Hola Michelle

DataGridView es un control con un alto grado de personalización en sus
características visuales a través de estilos, por lo que es posible que
este
sea el motivo por el que cuando se deshabilita no se cambie su color a
otro
que indice tal estado (como sucede con otros controles), de forma que el
programador pueda aplicar una combinación de colores que indique dicho
estado
deshabilitado, para los diferentes elementos de la cuadrícula: celdas,
cabeceras, etc.

Un modo simple de indicar visualmente el estado deshabilitado del control
sería mediante su propiedad DefaultCellStyle, de forma similar a como
puedes
ver en el siguiente ejemplo:

//
this.DataGridView1.Enabled = false;
this.DataGridView1.DefaultCellStyle.BackColor = Color.Gray;
//

Espero que te sirva de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
http://geeks.ms/blogs/lmblanco/


"Michelle" wrote:

Por que cuando se pone a false la propiedad Enabled de un datagridview no
se
pone gris como los demas controles?



Respuesta Responder a este mensaje
#2 Luis Miguel Blanco
02/06/2008 - 18:42 | Informe spam
Hola Michelle

No hay de qué, espero que te sea de utilidad 8-)

En cuanto a las otras cuestiones que planteas, cuando comentas acerca de
tener dos tipos de controles en una misma columna, supongo que te refieres a
la posibilidad de utilizar controles de edición de los valores de la celda
distintos de los habituales. Si es así, hasta donde yo he podido realizar
pruebas con el DataGridView, solamente te permite personalizar una columna
para que puedas cambiar el control de edición por un único tipo de control
para toda la columna. En el siguiente enlace tienes una respuesta que envié
en los foros hace unos meses a una cuestión parecida, donde se incluye el
código para implementar esta característica:

http://groups.google.es/group/micro...995c316727

También te paso el siguiente enlace, que corresponde a un artículo que
publiqué en el número de abril de dotNetMania sobre este aspecto del
DataGridView, y que contiene el código fuente correspondiente a dicho
artículo.

http://www.dotnetmania.com/Articulo...torDGV.rar

Respecto a la posibilidad de inhabilitar una celda del grid en base a una
condición, puedes utilizar el evento CellFormatting, y dentro de este,
asignar a la propiedad ReadOnly de la celda el valor true, para que no pueda
ser editada. En este evento además, puedes cambiar el estilo de la celda --el
color por ejemplo--, de forma que el usuario sepa que dicha celda se ha
deshabilitado.

//
private void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
// comprobar si la columna corresponde a la celda que necesitamos
desactivar
if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Country")
{
// comprobar el valor de la celda
if ((string)e.Value == "UK")
{
// si el valor de la celda es el adecuado, ponerla como solo
lectura
e.CellStyle.BackColor = Color.Yellow;

this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly = true;
}
}
}
//

Espero que te sirva de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
http://geeks.ms/blogs/lmblanco/


"Michelle" wrote:

Hola Luis Miguel y gracias por la ayuda.
Deja aprovecharte ya que son pocos los que conocen bien el uso del
Datagidview y la ayuda de msn no es muy clara.
a)Como se hace para en una misma columna tener dos tipos de controles
distintos de acuerdo a una condicion del registro?
b)Se puede inactivar una celda especifica, tambien de acuerdo a una
condicion ?
muchas gracias

"Luis Miguel Blanco" escribió
en el mensaje news:
> Hola Michelle
>
> DataGridView es un control con un alto grado de personalización en sus
> características visuales a través de estilos, por lo que es posible que
> este
> sea el motivo por el que cuando se deshabilita no se cambie su color a
> otro
> que indice tal estado (como sucede con otros controles), de forma que el
> programador pueda aplicar una combinación de colores que indique dicho
> estado
> deshabilitado, para los diferentes elementos de la cuadrícula: celdas,
> cabeceras, etc.
>
> Un modo simple de indicar visualmente el estado deshabilitado del control
> sería mediante su propiedad DefaultCellStyle, de forma similar a como
> puedes
> ver en el siguiente ejemplo:
>
> //
> this.DataGridView1.Enabled = false;
> this.DataGridView1.DefaultCellStyle.BackColor = Color.Gray;
> //
>
> Espero que te sirva de ayuda.
>
> Un saludo
> Luis Miguel Blanco
> http://www.dotnetmania.com
> http://geeks.ms/blogs/lmblanco/
>
>
> "Michelle" wrote:
>
>> Por que cuando se pone a false la propiedad Enabled de un datagridview no
>> se
>> pone gris como los demas controles?
>>
>>
>>



Respuesta Responder a este mensaje
#3 Michelle
03/06/2008 - 01:38 | Informe spam
Gracias otra vez, Luis Miguel.
Voy a revisar los links a ver que tal.
Saludos



"Luis Miguel Blanco" escribió
en el mensaje news:
Hola Michelle

No hay de qué, espero que te sea de utilidad 8-)

En cuanto a las otras cuestiones que planteas, cuando comentas acerca de
tener dos tipos de controles en una misma columna, supongo que te refieres
a
la posibilidad de utilizar controles de edición de los valores de la celda
distintos de los habituales. Si es así, hasta donde yo he podido realizar
pruebas con el DataGridView, solamente te permite personalizar una columna
para que puedas cambiar el control de edición por un único tipo de control
para toda la columna. En el siguiente enlace tienes una respuesta que
envié
en los foros hace unos meses a una cuestión parecida, donde se incluye el
código para implementar esta característica:

http://groups.google.es/group/micro...995c316727

También te paso el siguiente enlace, que corresponde a un artículo que
publiqué en el número de abril de dotNetMania sobre este aspecto del
DataGridView, y que contiene el código fuente correspondiente a dicho
artículo.

http://www.dotnetmania.com/Articulo...torDGV.rar

Respecto a la posibilidad de inhabilitar una celda del grid en base a una
condición, puedes utilizar el evento CellFormatting, y dentro de este,
asignar a la propiedad ReadOnly de la celda el valor true, para que no
pueda
ser editada. En este evento además, puedes cambiar el estilo de la
celda --el
color por ejemplo--, de forma que el usuario sepa que dicha celda se ha
deshabilitado.

//
private void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
// comprobar si la columna corresponde a la celda que necesitamos
desactivar
if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Country")
{
// comprobar el valor de la celda
if ((string)e.Value == "UK")
{
// si el valor de la celda es el adecuado, ponerla como solo
lectura
e.CellStyle.BackColor = Color.Yellow;

this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly = true;
}
}
}
//

Espero que te sirva de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
http://geeks.ms/blogs/lmblanco/


"Michelle" wrote:

Hola Luis Miguel y gracias por la ayuda.
Deja aprovecharte ya que son pocos los que conocen bien el uso del
Datagidview y la ayuda de msn no es muy clara.
a)Como se hace para en una misma columna tener dos tipos de controles
distintos de acuerdo a una condicion del registro?
b)Se puede inactivar una celda especifica, tambien de acuerdo a una
condicion ?
muchas gracias

"Luis Miguel Blanco"
escribió
en el mensaje news:
> Hola Michelle
>
> DataGridView es un control con un alto grado de personalización en sus
> características visuales a través de estilos, por lo que es posible que
> este
> sea el motivo por el que cuando se deshabilita no se cambie su color a
> otro
> que indice tal estado (como sucede con otros controles), de forma que
> el
> programador pueda aplicar una combinación de colores que indique dicho
> estado
> deshabilitado, para los diferentes elementos de la cuadrícula: celdas,
> cabeceras, etc.
>
> Un modo simple de indicar visualmente el estado deshabilitado del
> control
> sería mediante su propiedad DefaultCellStyle, de forma similar a como
> puedes
> ver en el siguiente ejemplo:
>
> //
> this.DataGridView1.Enabled = false;
> this.DataGridView1.DefaultCellStyle.BackColor = Color.Gray;
> //
>
> Espero que te sirva de ayuda.
>
> Un saludo
> Luis Miguel Blanco
> http://www.dotnetmania.com
> http://geeks.ms/blogs/lmblanco/
>
>
> "Michelle" wrote:
>
>> Por que cuando se pone a false la propiedad Enabled de un datagridview
>> no
>> se
>> pone gris como los demas controles?
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida