winforms - C# Create, check, loop through objects -
such weird situation appears in front of me. here thing. if in php or other programming language easy in c# dont know how can achieve this.
brief description of problem:
- i have userform in c# combobox. in combobox have many items there in database -> dynamically filled on start of application
- each item should represent single userform. here problem, if user choses item , clicks on button check should fired if userform has been created, if not, new (object ?) userform must created. delete , recreate new form everytime user choses new option want keep userforms , create them once , hide them or show them, textinputs etc. remain filled while application run (but dont thing creating 15-20 userforms @ start of app okay in terms of performance).
so thinking of doing , tried:
i wanted use name of chosen item combobox , use object (userform) name. (also perform check if exists before creating) -> apparently not possible in c# use string variable object name
i googled dictionaries, can store there whole userforms ?
also thinking of creating 15-20 userforms @ beginning , looping through them , show them or hide them.
any ideas ?
this caching problem. want cache forms.
so first need container cache, e.g.
var cache = new list<userform>();
then, when form needed, need special method search cache , add if needed. because there more 1 type of form, you'll want use generics here:
t getorcreateform<t> t: userform, new() { userform f = cache.oftype<t>().firstordefault(); //search cache if (f == default(t)) //if not found, { f = new t(); //create anew cache.add(f); //and add cache } return f; //return form created/retrieved }
you call method, passing type of form desired:
var form1 = getorcreateform<form1>(); form1.show();
the above assumes there 1 type of form (one class) each row in list. if have common form class, distinguished else (e.g. maybe each form has unique name
property set @ run time) you'd need dictionary tell forms apart:
var cache = new dictionary<string, userform>(); userform getorcreateform(string name) { userform f; if (!cache.trygetvalue(name, out f)) { f = new userform { name = name }; cache.add(name, f); } return f; } var myform = getorcreateform("someuniquename"); myform.show();
Comments
Post a Comment