CheckBox - RadioButton ReadOnly

06/07/2004 - 14:04 por Anonimo | Informe spam
Hola, una cuestión a ver si es posible.

Quisiera saber cómo se pueden crear CheckBox -
RadioButton que sean ReadOnly, quizá no tenga sentido ???

Por ejemplo, se daría este caso, que tengas un checkbox
con un valor (activo o no) pero no quieres que el usuario
pulse el checkbox y cambie el valor.

No quiero el efecto Enable = false, porque me cambiaría
el color de fondo, por eso sería mejor algo así como
ReadOnly.

Intuyo que habría que heredar de las clases padre y
crearse controles específicos, pero cómo podría crear esa
funcionalidad ?

Gracias a todos por vuestra atención. Un saludo cordial.

Preguntas similare

Leer las respuestas

#1 Yachakuq
06/07/2004 - 15:52 | Informe spam
Hola:
Exacto, lo haces así:
using ...
namespace ClasesPropias
{
#region CheckBox
/// <summary>
/// Representa un control de CheckBox de Windows
personalizado.
/// </summary>
public class MiCheckBox :
System.Windows.Forms.CheckBox
{
#region Propiedad
/// <summary>
/// Variable que obtiene o establece un
valor que indica si el control es de sólo lectura.
/// </summary>
private bool readOnly;

/// <summary>
/// Obtiene o establece un valor que
indica si el control es de sólo lectura.
/// </summary>
[Category("Propias")]
[Description("Indica si el control es de
sólo lectura.")]
[DefaultValue(false)]
public bool ReadOnly
{
get
{
return readOnly;
}
set
{
readOnly = value;
}
}
#endregion Propiedad

#region Override
protected override void WndProc(ref
Message m)
{
if (this.ReadOnly && (m.Msg ==
0x0201 || m.Msg == 0x0203))
{
return;
}
base.WndProc(ref m);
}
#endregion Override
}
#endregion CheckBox
}
No te olvides de reemplazar System.Windows.Forms.CheckBox
por ClasesPropias.MiCheckBox (2 veces) en tu formulario
que contiene el control.
Igualmente haces con el RadioButton.

Saludos.
Yachakuq
#2 Pedro Luna Montalvo
07/07/2004 - 15:43 | Informe spam
Hmmm
No tengo mi VS.NET a mano ( :( ) pero, acaso esto no solamente trataria los
mensajes del raton, pero no evitaria que el usuario lo cambie por teclado,
es decir, dandole el enfoque al CheckBox y presionando la Barra
Espaciadora??

Saludos
Pedro Luna, MVP
Gye, Ecu

"Yachakuq" escribió en el mensaje
news:272f301c46360$6e4a9b90$
Hola:
Exacto, lo haces así:
using ...
namespace ClasesPropias
{
#region CheckBox
/// <summary>
/// Representa un control de CheckBox de Windows
personalizado.
/// </summary>
public class MiCheckBox :
System.Windows.Forms.CheckBox
{
#region Propiedad
/// <summary>
/// Variable que obtiene o establece un
valor que indica si el control es de sólo lectura.
/// </summary>
private bool readOnly;

/// <summary>
/// Obtiene o establece un valor que
indica si el control es de sólo lectura.
/// </summary>
[Category("Propias")]
[Description("Indica si el control es de
sólo lectura.")]
[DefaultValue(false)]
public bool ReadOnly
{
get
{
return readOnly;
}
set
{
readOnly = value;
}
}
#endregion Propiedad

#region Override
protected override void WndProc(ref
Message m)
{
if (this.ReadOnly && (m.Msg =0x0201 || m.Msg == 0x0203))
{
return;
}
base.WndProc(ref m);
}
#endregion Override
}
#endregion CheckBox
}
No te olvides de reemplazar System.Windows.Forms.CheckBox
por ClasesPropias.MiCheckBox (2 veces) en tu formulario
que contiene el control.
Igualmente haces con el RadioButton.

Saludos.
Yachakuq
#3 Yachakuq
07/07/2004 - 18:36 | Informe spam
Hola Pedro:
Tienes razón, para ello se aumenta este código a la clase:
public override bool PreProcessMessage(ref Message m)
{
if (this.ReadOnly)
{
return true;
}
return base.PreProcessMessage(ref m);
}
Saludos.
Yachakuq
Mostrar la cita
solamente trataria los
Mostrar la cita
cambie por teclado,
Mostrar la cita
Barra
Mostrar la cita
en el mensaje
Mostrar la cita
Ads by Google
Search Busqueda sugerida