Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da se setuje promenljiva u design-time user control-e

[es] :: .NET :: Kako da se setuje promenljiva u design-time user control-e

[ Pregleda: 3814 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

VladaSu

Član broj: 31634
Poruke: 1099
77.46.157.*



+218 Profil

icon Kako da se setuje promenljiva u design-time user control-e09.09.2007. u 16:25 - pre 202 meseci
Napravio sam user komponentu koja ima
property AutoInit bool default false i
setuje promenljivu private bool _AutoInit=false;

U konstuktoru klase komponente sam stavio if(_AutoInit== true)....

Problem mi je to sto ako i dizajneru komponente promenim na AutoInit=true ono ostaje i dalje false,
odnosno setuje se na true posle konstruktora.

Odnosno,
1. Imam formu.
2. Na njoj moju kontrolu.
3. Na mojoj kontroli u propertisu proemnim AutoInit na true (bio je false)
4. Pokrenem formu
5. pitanje: kako da se sada pozove neke u funkcija kontroli ako je AutoInit=true ????????

[Ovu poruku je menjao VladaSu dana 09.09.2007. u 17:36 GMT+1]
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
195.252.78.*



+311 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e09.09.2007. u 21:15 - pre 202 meseci
Možda bi trebao u samom set delu tvog propertija da pozoveš tu funkciju koja ti treba ukoliko se property setuje na true.
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.tippnet.co.yu.



+218 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e10.09.2007. u 07:07 - pre 202 meseci
Da, ali moram da proverim kako su setovana jos 2 propertisa koja se takojde kasnije setuju.
Postoji nacin, nisam nasao na netu ali kako kada menjam background neke kontrole ona se odmah promeni?
Slicna je situacija.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
212.200.27.*



+311 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e10.09.2007. u 09:23 - pre 202 meseci
To što hoćeš nije baš jednostavno napraviti, možda bi trebao da razmisliš o redizajnu tvoje kontrole.
MS u svojim windows kontrolama izbegava zavisnost između propertija da bi se po defaultu izgenerisao valjan kod, npr. BackColor koji si naveo ne zavisi ni od kog drugog propertija.
Ako baš želiš da uradiš onako kako si zamislio, onda moraš da praviš custom code serijalizaciju za tvoju kontrolu, ovde to imaš objašnjeno:
http://msdn2.microsoft.com/en-us/library/ms973818.aspx

Pozdrav!
 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
83.209.23.*



+2 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e10.09.2007. u 12:58 - pre 202 meseci
Morao sam 3 puta da procitam dok sam shvatio sta hoces =) Ispravi te pravopisne greske.
Da li znas sta je property i kako on funkcionise?

Recimo zelis da napravis jedan property koji ce pamtiti X koordinatu tamo necega i kada se ona promeni da se desi nesto, ok?

e sad
Code:

private int _x;
public int X
{
   get { return _x; }
   set
   {
      if(_x != value)
        {
           _x = value;
           // pozivas to nesto...
           nesto();
        }
   }
}


Dalje u tvom kodu, bio to konstruktor, neka metoda ili property, ono _x ne postoji. Zaboravi na njega!
Radis samo sa property-em.
Code:

if(X > 5) ...
X++ ...
int y = X + 3 ...


Razumes?

E sada, ukoliko radis neki komplikovaniji projekat, pa vise komponenti tvog programa treba medjusobno da komunicira, tada ces koristiti evente, a to nesto() ce biti upravo okidanje nekog eventa. Imaces "pretplatnike" koji ce pratiti kada se odredjen event desio i oni ce onda shodno tome uraditi opet "nesto".
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.tippnet.co.yu.



+218 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e10.09.2007. u 15:19 - pre 202 meseci
Nismo se razumeli. Konkretno cu objasniti primer.
Hocu da imam combobox koji je prosiren sa jos 3 properties-a.

Prvi je bool AutoInit default false.
Drugi je enum (Artikli, Komitenti) default je Artikli.
Trecu je Connection defalut null.


Kada ubacim kontrolu na formu izaberem koji je Connection.
U form_load stavim "kontrola.beginiAutoInit();" i on mi napuni combobox artiklima.

To je ono sto sam i hteo.

Problem mi je ako stavim da je AutoInit=true.
Onda mi ne treba u form_load funkcija kontrola.beginiAutoInit() vec bih da se automatski combo napuni kada se otvori forma.
Nekako mi je bilo logicno da to stavim u konstruktor kontrole ali problem je to sto se kasnije setuje AutoInit na true.

Mozda je sada jasnije zasto ne mogu da pozivam funkciju beginiAutoInit() kada se setuje BeginInit na true
jer ce i da se "enum (Artikli, Komitenti)" kasnije setuje.

Ukratko, hteo bih da pozovem neku funkciju u kotroli kada se forma pokrene a da ta funkcija dobije
tacna - user, a ne default podesavanja kontrole.

Ako treba postavicu kratku verziju koda.

@dusans
Meni ne treba bas odmah da se menjaju stavri vec kada se pokrene forma na kojoj je kotrola, ali ako nema drugi nacin onda ce i tvoj link pomoci :) Treba mi samo da vidim koja su user podesavanja a ne default.
Hvala

Glupo ali ce raditi. Da stavim sve na prazno pa da se moraju sve tri setovati.
Kada se radi set onda povecam brojac i ako je brojac 3 onda pokrene beginiAutoInit
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
83.209.23.*



+2 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e10.09.2007. u 16:00 - pre 202 meseci
Razumem ja sta si ti hteo ali ocigledno nikada nisi radio sa eventima, a meni je malo mrsko da ti ovde pisem ceo kod.
Poenta je sledeca.

Imas 3 property-a
1. Connection string ili sta vec
2. Neka lista kojom ce biti popunjen combo
3. Auto fill property

Treba ti sad jedna f-ja koja popunjava combo ali mora biti uslov da connection vise nije null i da ona lista nije prazna ili sta vec radis.
Nazovi je fillCombo ili kako vec.

Sad sve pises u set delu property-a

Za autofill, kada je nova vrednost true, pozoves fillCombo

Za Connection isto, cim se promeni vrednost, pozivas fillCombo

Kada se promeni ona lista, pozivas fillCombo

I to ti je cela mudrost...
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
77.46.157.*



+218 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e10.09.2007. u 17:22 - pre 202 meseci
@Pharos

U ovom slucaju nije pametno tri puta puniti combo. Moze biti zescih SQL-ova pa 5-6 kontrola na formi....


Code:

namespace dataControls
{

    [RefreshProperties(RefreshProperties.All)]
    public partial class dataCombo: MTGCComboBox 
    {
        
        public enum connType { Artikli_naziv, Artikli_sifra, Jedinice_mera, Mesta_naziv};
        private connType _connType = connType.Artikli_naziv;
        private bool _autoInit = false;
        private FbConnection _FbConn = new FbConnection();

        public dataCombo()
        {
            [b]if(_autoInit==true) this.beginInit();[/b]
        }
        public connType ConnType
        {
            set{this._connType = value;}
            get{return this._connType;}
        }

        public bool AutoInit
        {
            set { _autoInit = value; }
            get { return _autoInit; }
        }

        public FbConnection FbConn
        {
            set { _FbConn = value; }
            get { return _FbConn; }
        }
        
        public void beginInit()
        {
            if (_FbConn == null){ MessageBox.Show("You must set fb connection to dataCombo!");
            }else{initCmb();}
        }

....


}


Problem mi je to sto je _autoInit uvek false (boldovao sam ga), a kasnije bude true.
Logicno je da bude false ali bih nekako hteo da mi pokupi vrenost iz dizajnera.

Ovo bi trebalo da resi problem? http://msdn2.microsoft.com/en-...973818.aspx#custcodegen_topic7


[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
83.209.23.*



+2 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e10.09.2007. u 17:36 - pre 202 meseci
Ko ti je rekao da se combo puni 3 puta?
Procitaj jos jednom sta sam napisao.
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
77.46.157.*



+218 Profil

icon Re: Kako da se setuje promenljiva u design-time user control-e10.09.2007. u 17:53 - pre 202 meseci
Ako su mi default vrednosti za autoinit false i konekcija null i lista->Artikli
i postavim autoinit=true i konekcija=conn1 i lista->Komitenti
onda se desava sledece:
1. set autoinit=true, konekcija=null onece onda nista raditi i to je OK.
2. set konekcija=conn1,autoinit=true i puni artiklima NIJE TREBALO.
3. set lista->Komitenti. lista->Komitenti i puni komitentima OK.
Jedno punjenje vise, a ako zavisi od jos nekih setovanja onda se broj punjenja povecava.

Svejedno... nesto mi drugo palo na pamet i radi, valjda ....

Code:

        protected override void OnCreateControl()
        {
            if (!this.DesignMode && _autoInit)
            {
                beginInit();
            }
            base.OnCreateControl();
        }

[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

[es] :: .NET :: Kako da se setuje promenljiva u design-time user control-e

[ Pregleda: 3814 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.