Na taip, o vat kaip uzdarineti, kuriuo budu geriau ? Dim OpenFileDialog as new Form2 ------------------------------------- Form2.close OpenFileDialog.close Me.Close ? "Jornada Del Muerto" <Jornada@Lythum.lt> wrote in message news:ia99tp$dch$1@trimpas.omnitel.net... > Jei labai jauciasi ant greiciu tai gali tada gal ir laikyt atmintyj, > kad ir toje pacioje klaseje sukurt statini memberi saugot tos klases > objektui ir 1 statine startavimo funkcija. paprastai statines statinio > kintamojo tikrai nenaikins GC, bet cia galima sakyt atbulas anam variantui > variantas :) pvz: > > public class ManoKlase { > > static ManoKlase _Objektas = null; // c# jeigu nenurodomas access > modyfer (t.y. public, private, protected, internal ir pan.) tai pagal > nutylejima tai buna private > > /* Statinis start metodas toje pacioje klaseje inicializuojantis klases > objekta - tavo atveju forma su tam tikrais parametrais */ > > public static [returnType] Start (...parametrai...) { // > [returnType] jeigu reikia cia aprasai duomenu tipa koki grazinti, dialogam > as paprastai dedu bool - priklausomai ar paspausta YES|OK/NO|Cancel > > // jeigu ner objekto > if(_Objektas == null ) { > // sukuriu objekta > _Objektas = new _Objektas(...parametrai...); > } > // objektas yra > else { > // priskiriame parametrus jau esamam objektui, jie galbut > pasikeite > _Objektas.Memberis = ...parametrai... > } > > // cia vyks modalinio dialogoo rodymas > // Paimu true arba false priklausomai ar paspausta OK ar ne > IF _Objektas.ShowDialog() == DialogResult.OK THEN > ' Paspausta OK > return _Objektas.[FilePath]; // daleiskim musu returnType > yra string, jeigu grazinama null reiskia nebuvo spausta ok, jeigu tekstas > reiskia tai failas/katalogas > > ' cia gali dar tikrinti ar realiai egzistuoja > failas > FileInfo file = new FileInfo(_Objektas.Path); > if file.Exist then..... > > ' taip pat jeigu tai direktorija tai: > DirectoryInfo dir = new DirectoryInfo(_Objektas.Path); > if dir.exist .... (jei gerai pamenu) > > ' Nors visumoje file dialogas validuoja pats > > > > Else > return Null; // VB kiek pamenu tai butu Start = Null vat del > VB.net pamirses ;) > > END IF > > > } /* end of Start */ > > /* Toliau klases visi kiti memberiai */ > } > > Visumoje isorinis kvietimas atrodytu tada taip: > > Dim path AS String = ManoKlase.Start(...parametrai...) > > if Not String.IsNullOrEmpty(path) then > > ' kazka atidarinejam > > ....fileOpen(path)... > > endif > > > > "Valdas" <valdonas@super.lt> wrote in message > news:ia8be4$4fg$1@trimpas.omnitel.net... >> na as parametra path ir filtra laikau globaliai, kiek jau ten jie tos >> vietos >> uzima, o pacios formos turinys generuojamas kekviena karta ja >> paleidziant. >> Dar vat idomu kokiu komponentu nenaudoti kad forma greiciau pasileistu ? >> >> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message >> news:ia6tuq$vvm$1@trimpas.omnitel.net... >>> Tai taip ir yra daryti geriausia, o jeigu tu ja nori saugotis >>> atmintyje >>> del to kad nepamirst paskutinio vartotojo nurodyto kelio ar kazkokios >>> tokios informacijos, geriau pasidaryk nustatymu klasyte ar struktura >>> kuria >>> naudotu jis, pvz: >>> >>> // rasau c# taip greiciau man, bet cia elementari klasyte >>> public class MyDialogSettings { >>> public string Path; >>> public string SelectedExtensions; >>> public string LastFile; >>> >>> public MyDialogSettings(string path) { >>> // Jeigu path tuscias ar lygus null tai nukreips i MyDocuments, >>> kitu atveju naudos path >>> Path = (String.IsNullOrEmpty( path ? >>> Environment.SpecialFolder.MyDocuments : path); >>> } >>> >>> ir t.t... >>> } >>> >>> Ir tada sios klases objekta saugai kur nors savo klaseje kuri naudoja >>> dialoga, kadangi .NET dirba reference'ais tai i klase bus paduodamas ne >>> objektas o tik nuoroda i ji: >>> >>> MyDialogSettings FileOpenSettings = new MyDialogSettings(null); // >>> inicializuojam my documents keliu >>> >>> ManoDialogas d = new ManoDialogas(Me.FileOpenSettings); >>> d.ShowDialog(); >>> >>> Viska ka darys iskvietus d.ShowDialog tavo klase su settingu objektu ja >>> sunaikinus liks FileOpenSettings klases memberyje, tada kita kart >>> inicializuojant nauja dialoga paduodi tapati FileOpenSettings ir tavo >>> klase naudoja juos vel, taip islaikant visa pries tai buvusio dialogo >>> stovi. >>> >>> Bent jau galima taip daryti, tada nesaugosi ko nereikia o tik ko reikia >>> atmintyje. >>> >>> >>> "Valdas" <valdonas@super.lt> wrote in message >>> news:ia5mo5$3qb$1@trimpas.omnitel.net... >>>> na vienok tas variantas : >>>> Dim FileDialog as new Form2 >>>> FileDialog.Showdialog() >>>> >>>> padejo, aciu, galima tema uzdarinet :) >>>> >>>> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message >>>> news:ia470e$thv$1@trimpas.omnitel.net... >>>>> GC.[spausk tada ctrl+space] :)) >>>>> >>>>> "Valdas" <valdonas@super.lt> wrote in message >>>>> news:ia35n5$bs4$1@trimpas.omnitel.net... >>>>>> Na o tai kaip mano atveju (Visual Studio 5, Visual Basic), >>>>>> prisibrauti >>>>>> prie >>>>>> to GC (Garbage Collector) ? >>>>>> >>>>>> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message >>>>>> news:i9s1h6$n88$1@trimpas.omnitel.net... >>>>>>> Instance tai kazkokio tipo sukurtas objektas, pvz.: DataTable yra >>>>>>> tipas, >>>>>>> tipas gali buti klase, struktura, ar primityvus tipas pvz int ir >>>>>>> t.t.. >>>>>>> tai >>>>>>> yra tipas, o sio tipo sukurtas objektas yra to tipo object instance, >>>>>>> arba >>>>>>> tiesiog to tipo instance, pvz.: >>>>>>> >>>>>>> Daleiskim tu susikurei savo open file dialog klase, ja uzvadinai >>>>>>> "ManoFileOpenDialogas" <- kitaip sakant sukurei ManoFileOpenDialogas >>>>>>> tipa. >>>>>>> >>>>>>> ' Deklaruojam >>>>>>> Dim a As ManoFileOpenDialogas ' nurodai kad kintamasis a bus >>>>>>> ManoFileOpenDialogas tipo >>>>>>> >>>>>>> ' kintamajame a sukuriu (kiti dar vadina inicializuoju) >>>>>>> ManoFileOpenDialogas tipo object instance >>>>>>> a = new ManoFileOpenDialogas ' va a ir bus instance (dar kiti >>>>>>> vadintu >>>>>>> objektu, zodziu kaip nepavadinsi taip nepagadinsi) >>>>>>> >>>>>>> Siaip terminologijos ipac tokios bazines OOP vertetu pasimokinti, >>>>>>> ok >>>>>>> toliaujam keliau :) tau ka is esmes norejo pasakyti zmones, kad >>>>>>> .NET >>>>>>> yra >>>>>>> toks dalykas kaip GC (Garbage Collector) grubiai vertus, siuksliu >>>>>>> rinkejas, pvz. kokiam nors C++ viska alokuota rankiniu budu atminti >>>>>>> skirta >>>>>>> kazkokiam programos darbui, po to reikedavo nepamirsti atlaisvinti - >>>>>>> kitaip ji uzimdavo ir toliau vieta ir su laiku prisikaupdavo tos >>>>>>> rezervuotos/alokuotos atminties daug, nuo ko galedavo luzti >>>>>>> programa, >>>>>>> .net >>>>>>> atvejais tam buna ivairus metodai dispose ir pan.. Bet .NET daugeli >>>>>>> tokiu >>>>>>> objektu pasalina pats GC pagalba, del to greiciausia su tavuoju >>>>>>> objektu >>>>>>> taspats atsitinka, tiesiog reik suprasti kokiom aplinkybem .net pats >>>>>>> juos >>>>>>> naikina. >>>>>>> >>>>>>> Visumoje .net automatu, kaip jau ir minejau naikina objektus >>>>>>> kurie >>>>>>> niekur nera saugomi ar isiminti, pvz kazkokiam kintamajame ir >>>>>>> panasiai, >>>>>>> pvz. turime funkcija: >>>>>>> >>>>>>> Public Sub ManoFunkcija >>>>>>> >>>>>>> Dim a As ManoFileOpenDialogas ' >>>>>>> a = new ManoFileOpenDialogas >>>>>>> >>>>>>> ' dirbi su a >>>>>>> a.DoModal() ' ir t.t... >>>>>>> >>>>>>> End Sub >>>>>>> >>>>>>> Isejus is sios funkcijos a bus automatiskai naikinamas, bet >>>>>>> sekanti >>>>>>> karta iskvietus sia funkcija (tiksliau metoda) objektas sukuriamas >>>>>>> bus >>>>>>> is >>>>>>> naujo, taip va ir turetu buti daroma, paprastai atmintyje niekas >>>>>>> nelaiko >>>>>>> inicializuotu OpenFileDialog'u, aplamai kuo maziau laikysi tokio >>>>>>> nereikalingo saugoti slamsto tuo tavo programa maziau resursu >>>>>>> valgys, >>>>>>> o >>>>>>> jeigu nori ji saugotis del to kad naudosi labai daznai (nebent) tai >>>>>>> saugokis toje klaseje kuri su juo dirbs, tada butu kazkas tokio: >>>>>>> >>>>>>> ' Klases, bet ne metodo/funkcijos zonoje deklaruotas kintamasis >>>>>>> public OpenFile As ManoFileOpenDialogas = Null ' Nepamenu gerai >>>>>>> VB.NET >>>>>>> sintakses, paskutini kart reikejo pries 5 metus >>>>>>> >>>>>>> Public Sub ManoFunkcija >>>>>>> >>>>>>> If Me.OpenFile = Null Then ' rodos VB kitaip tikrinasi ar >>>>>>> objektas >>>>>>> null >>>>>>> Me.OpenFile = new ManoFileOpenDialogas >>>>>>> End If >>>>>>> >>>>>>> ' kreipiesi i savo dialoga >>>>>>> Me.DoModal() ' ir t.t... >>>>>>> >>>>>>> End Sub >>>>>>> >>>>>>> Tada 1 karta bus sukuriamas dialogas ir veliau pernaudojamas ji >>>>>>> nekuriant >>>>>>> dar karta, tuo paciu jis saugomas bus klaseje kuri ji naudoja, siaip >>>>>>> tai >>>>>>> geriausia savo kodo parasytum, tai tada butu aiskiau kas negerai, >>>>>>> gal >>>>>>> beda >>>>>>> visai kitur. >>>>>>> >>>>>>> >>>>>>> Freelancer Developer [R&D] >>>>>>> http://www.lythum.lt >>>>>>> >>>>>>> Naujausias research: >>>>>>> http://wiki.lythum.lt/index.php?title=Facebook_integrafimo_galimyb%C4%97s >>>>>>> >>>>>>> >>>>>>> "Valdas" <valdonas@super.lt> wrote in message >>>>>>> news:i9rr3e$cre$1@trimpas.omnitel.net... >>>>>>>> na as kazko nesuprantu, siaip as ant Visual Basic darau, tai kas >>>>>>>> tas >>>>>>>> instance nezinau :(( >>>>>>>> >>>>>>>> "Andrius F" <andriusflMORESPAM@gmail.com> wrote in message >>>>>>>> news:i9rq8p$bic$1@trimpas.omnitel.net... >>>>>>>>> kiekviena karta pries ShowDialog() kurk nauja instance.. >>>>>>>>> using(var form = new SomeForm()) >>>>>>>>> { >>>>>>>>> if(form.ShowDialog(this) == DialogResult.Ok) >>>>>>>>> { >>>>>>>>> ... >>>>>>>>> } >>>>>>>>> } >>>>>>>>> >>>>>>>>> "Valdas" <valdonas@super.lt> wrote in message >>>>>>>>> news:i9rf9u$qk9$1@trimpas.omnitel.net... >>>>>>>>>> ka reiskia nereusint instance, tai kaip tada naudotis tuo >>>>>>>>>> ShowDialog >>>>>>>>>> ? >>>>>>>>>> man reikalingas tas modaliskumas, nes darau savo open file >>>>>>>>>> dialoga, >>>>>>>>>> ir >>>>>>>>>> kai uzdarau forma, tik tuomet gaunu reiksme... >>>>>>>>>> >>>>>>>>>> "fakeID" <fakeID@fakeHost.com> wrote in message >>>>>>>>>> news:i9rcss$n3d$1@trimpas.omnitel.net... >>>>>>>>>>> Nereiktu reusinti formos instance, nebent tau tikrai taip reikia >>>>>>>>>>> (pvz >>>>>>>>>>> forma kuriasi 15 sek, bet tada turbut kazkas blogai su tavo >>>>>>>>>>> forma >>>>>>>>>>> ;).. >>>>>>>>>>> Blogiausiu atveju isitikink, kad GarbageCollector nesunaikins >>>>>>>>>>> tavo >>>>>>>>>>> formos: >>>>>>>>>>> a. ikisk instance i static field >>>>>>>>>>> b. galbut verta overridint close, ir hidint forma vietoj >>>>>>>>>>> base.close() >>>>>>>>>>> >>>>>>>>>>> bet siaip - nereusink instance. tai bloga architektura >>>>>>>>>>> >>>>>>>>>>> "Valdas" <valdonas@super.lt> wrote in message >>>>>>>>>>> news:i9r6gd$er1$1@trimpas.omnitel.net... >>>>>>>>>>>> Sveiki, iskilo tokia beda, bandant is vienos formos atidaryti >>>>>>>>>>>> kita >>>>>>>>>>>> "Forrm2.ShowDialog()", pradzioje atidaro, bet programai >>>>>>>>>>>> padirbus >>>>>>>>>>>> kokia >>>>>>>>>>>> valanda ir vel bandant atidaryti, meta klaida >>>>>>>>>>>> "ObjectDisposedException", gal nujauciat kur cia beda ? >>>>>>>>>>>> >>>>>>>>>>>> aciu >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>> >>>> >> >>