Edicion de propiedades tipo struct en la paleta de propiedades

23/02/2006 - 16:08 por Alvaro | Informe spam
Buen dia;

Tengo este problema;

Declaro un struct myNumber, y en un UserControl MyControl declaro una
propiedad de tipo myNumber llamada NumberComposition, quiero que en la
paleta de propiedades de los controles creados de tipo MyControl me
aparezca la propiedad de la misma forma como aparecen Font, Location o Size.

¿Que debo hacer?




Ver codigo:

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

namespace My.Windows.Controls
{
public struct myNumber {
public readonly Int32 Precision;
public readonly Int32 Scale;
public Number(Int32 precision,Int32 scale ){
Precision = precision;
Scale = scale;
}
}
/// <summary>
/// Descripción breve de Mycon.
/// </summary>
public class MyControl: System.Windows.Forms.UserControl
{
/// <summary>
/// Variable del diseñador requerida.
/// </summary>
private System.ComponentModel.Container components = null;
private myNumber _numbercomposition = new Number(13,0);

public MyControl()
{
// Llamada necesaria para el Diseñador de formularios Windows.Forms.
InitializeComponent();

// TODO: agregar cualquier inicialización después de llamar a
InitializeComponent

}

public myNumber NumberComposition{
get{
return this._numbercomposition;
}
set{
if (this._numbercomposition.ToString() == value.ToString())
return;
this._numbercomposition = value;
if(this.NumberType == NumericType.Integer &&
this._numbercomposition.Scale > 0 )
MessageBox.Show("Valor de NumberComposition no válida para
NumberType.Integer");
}
}

/// <summary>
/// Limpiar los recursos que se estén utilizando.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Código generado por el Diseñador de componentes
/// <summary>
/// Método necesario para admitir el Diseñador. No se puede modificar
/// el contenido del método con el editor de código.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
#endregion
}
}
 

Leer las respuestas

#1 Rodrigo Díaz
23/02/2006 - 23:23 | Informe spam
Si decoras tu propiedad con:
[System.ComponentModel.Browsable(true)]
??


"Alvaro" wrote:

Buen dia;

Tengo este problema;

Declaro un struct myNumber, y en un UserControl MyControl declaro una
propiedad de tipo myNumber llamada NumberComposition, quiero que en la
paleta de propiedades de los controles creados de tipo MyControl me
aparezca la propiedad de la misma forma como aparecen Font, Location o Size.

¿Que debo hacer?




Ver codigo:

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

namespace My.Windows.Controls
{
public struct myNumber {
public readonly Int32 Precision;
public readonly Int32 Scale;
public Number(Int32 precision,Int32 scale ){
Precision = precision;
Scale = scale;
}
}
/// <summary>
/// Descripción breve de Mycon.
/// </summary>
public class MyControl: System.Windows.Forms.UserControl
{
/// <summary>
/// Variable del diseñador requerida.
/// </summary>
private System.ComponentModel.Container components = null;
private myNumber _numbercomposition = new Number(13,0);

public MyControl()
{
// Llamada necesaria para el Diseñador de formularios Windows.Forms.
InitializeComponent();

// TODO: agregar cualquier inicialización después de llamar a
InitializeComponent

}

public myNumber NumberComposition{
get{
return this._numbercomposition;
}
set{
if (this._numbercomposition.ToString() == value.ToString())
return;
this._numbercomposition = value;
if(this.NumberType == NumericType.Integer &&
this._numbercomposition.Scale > 0 )
MessageBox.Show("Valor de NumberComposition no válida para
NumberType.Integer");
}
}

/// <summary>
/// Limpiar los recursos que se estén utilizando.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Código generado por el Diseñador de componentes
/// <summary>
/// Método necesario para admitir el Diseñador. No se puede modificar
/// el contenido del método con el editor de código.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
#endregion
}
}

Preguntas similares