calling button class in a form in vb.net -
i herewith develop application have created class calls button events(i.e. enable or visible)
public class classfrmload dim btnadd new button dim btnedit new button private sub formload() me.btnadd.visible = true me.btnadd.enabled = true me.btnedit.visible = true me.btnedit.enabled = false end sub end class i created button events class(classfrmload) way buttons should enabled , visible when each & every form loading.
there 6 buttons in forms (frm1, frm2 etc.,) btnadd, btnedit, btncancel etc., don't want display buttons(visible/enable) while loading form.
here question: how can call class(classfrmload) events alter (enable/visible) buttons positioned in forms(frm1, frm2, etc.,) , how buttons events in forms?
dear sergio,
thanks immediate response. missing , not expected, here complete code form including yours.
this code suggested classfrmload:
public class classfrmload public shared sub formload(byref target form) each ctl control in target.controls if not typeof ctl button continue dim btn button = directcast(ctl, button) select case btn.name.tolower() case "btnadd" btn.visible = true btn.enabled = true case "btnsave" btn.visible = false btn.enabled = false case "btnedit" btn.visible = true btn.enabled = true case "btncancel" btn.visible = true btn.enabled = false case "btnclose" btn.visible = true btn.enabled = true case "btnupdate" btn.visible = false btn.enabled = false case "btnfind" btn.visible = false btn.enabled = false 'and on end select next end sub end class this code formload event:
private sub frmcreate_unit_load(byval sender system.object, byval e system.eventargs) handles mybase.load classfrmload.formload(me) 'display software , title of page me.text = msgcap & " | " & " create unit" me.lblcomp.text = compname me.stbar_user.text = frmmain.stbar_user.text me.stbar_userid.text = frmmain.stbar_userid.text me.stbar_g_id.text = frmmain.stbar_g_id.text me.stbar_g_no.text = frmmain.stbar_g_no.text me.cbounit.visible = false me.txtunit_long.visible = true me.btnfind.visible = false me.txtunit_id.enabled = false me.btnadd.focus() end sub please me sort out one. thanks...
every form in winforms class instance, inherited form class. because of this, cannot make static references it's members class, given form instance. generic class won't cut either because you're after specific class members. take advantage of controls collection , check it's name , type. once caught, can cast control button , set it's visibility , access.
for this, should make small adjustments code:
public class classfrmload public shared sub formload(byref target form) each ctl control in target.controls if not typeof ctl button continue dim btn button = directcast(ctl, button) select case btn.name.tolower() case "btnadd", "btnedit" btn.visible = true btn.enabled = true 'and on end select next end sub end class - changed formload visibility , access. should shared don't need create unnecessary instances of class
- added parameter, passe by reference referrs target form. assure can use on class inherits form class
- iterated controls collection , find candidate based on it's type , name
- when found, cast button , access it's properties normally.
it's example, based on code.
you should call on every form's formload handler, so:
private sub form1_load(sender object, e eventargs) handles mybase.load classfrmload.formload(me) end sub
Comments
Post a Comment