Component Proprietà e Costanti

lunedì 19 maggio 2008 - 13.20

lolic Profilo | Newbie

Salve a tutti,
scrivo per sapere come fare per utilizzare una variabile costante per impostare il valore di una proprietà.

Se nel componente che ho definito dichiaro:

class MyComponent : Component{ public int MyProperty { get{ return _myProperty;} set{ _myProperty = value;} } }

Dopo aver inserito il componente in un form vorrei da IDE impostare il valore della proprietà utilizzando una costante.
Nel metodo InitializeComponent() dovrebbe apparire da qualche parte

componente.MyProperty = VARIABILE_COSTANTE;

Brainkiller Profilo | Guru

>Salve a tutti,
>scrivo per sapere come fare per utilizzare una variabile costante
>per impostare il valore di una proprietà.

Variabile Costante scusa se rido, ma sono una il contrario dell'altra La variabile "varia" e la costante resta fissa.

>Dopo aver inserito il componente in un form vorrei da IDE impostare
>il valore della proprietà utilizzando una costante.

Puoi spiegare più chiaramente di che cosa hai bisogno ? Il mio collega MVP Lorenzo Benaglia suggerisce che vuoi usare un enum (enumeratore). Forse è questo che vuoi ?
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

munissor Profilo | Senior Member

il modo corretto di fare una proprietà editabile dal designer con valore di default è:

private const int DEFAULT_VALUE = 10;

private int myValue = DEFAULT_VALUE;

[DefaultValue(DEFAULT_VALUE)]
public int Value
{
get{...}
set{...}
}


in questo modo il designer se non modifichi niente non ti compila il codice in initializecomponents (questo è un grande vantaggio se tu in un futuro decidi di modificare il valore di default), se o modifichi la proprietà viene scritta in grassetto nel property grid del visual studio e il codice relativo viene inserito in InitializeComponents.

lolic Profilo | Newbie

(Variabile costante effettivamante fa ridere)

La mia intenzione è quella di impostare attraverso l'IDE di visual studio il valore di una proprietà di un componente da me implementato utilizzando una costante.
(Quindi dopo aver inserio in un form un componente, attraverso la finestra delle proprietà, settare il valore di una data proprietà utilizzando una costante.)

La cosa si può benissimo applicare anche ai controlli inseriti in un form. Poniamo il caso di impostare la proprietà Width di un un text box. Da IDE dovrei andare nella relativa property e impostare Width = 10. Ma se volessi invece settare Width = LARGHEZZA_TEXTBOX dove LARGHEZZA_TEXTBOX è una costante dichiarata come public const int LARGHEZZA_TEXTBOX = 10?

Non capisco perchè sia solo possibile impostare tali valori utilizzando il binding con i settings dell'applicazione.

munissor Profilo | Senior Member

Non avevo capito bene la domanda..scusami.


Un modo comodo per fare quello che dici tu è inserire la riga nel costruttore dopo il metodo InitializeComponents (però la cosa non è supportata dal designer, quindi credo che non ti faccia visualizzare la proprietà con il valore corretto)

Brainkiller Profilo | Guru

>Un modo comodo per fare quello che dici tu è inserire la riga
>nel costruttore dopo il metodo InitializeComponents (però la
>cosa non è supportata dal designer, quindi credo che non ti faccia
>visualizzare la proprietà con il valore corretto)

Anche secondo me questa è la strada giusta e quello che chiede lolic secondo me non è possibile in questo modo.
Forse l'unica cosa abbastanza simile è usare un enumeratore e assegnare vari valori esempio,
Width10 = 10
Width20 = 20
ecc.
a quel punto ti compare nella proprietà una DropDown da cui scegliere il valore come nel caso della proprietà di allineamento testo. Ma non mi pare una buona soluzione.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5