.net - Form Load Events not processed when Form is called 2nd time -
.net - Form Load Events not processed when Form is called 2nd time -
why doesn't next work?
two forms; first calls second. sec form has datagridview on - has no columns in it, they're added program, along datagridviewbuttoncolumn.
calling form2 first time works fine. calling sec time, buttons don't have text.
' first form - has 1 button, calls form2 public class form1 friend fruit new list(of fruit) private sub form1_load(sender object, e eventargs) handles mybase.load fruit.add(new fruit("apple", "red")) fruit.add(new fruit("orange", "orange")) fruit.add(new fruit("banana", "yellow")) fruit.add(new fruit("melon", "red")) fruit.add(new fruit("pear", "green")) end sub private sub button1_click(sender object, e eventargs) handles button1.click form2.showdialog() end sub end class public class fruit public property name string public property colour string public sub new(newname string, newcolour string) name = newname colour = newcolour end sub end class code sec form is:
' form2 has button closes form, , datagridview public class form2 dim datagridviewbuttoncolumn1 datagridviewbuttoncolumn dim setupalready boolean = false private sub form2_load(sender object, e eventargs) handles mybase.load datagridviewbuttoncolumn1 = new datagridviewbuttoncolumn datagridview1.datasource = form1.fruit datagridviewbuttoncolumn1 .name = "buttoncol" .usecolumntextforbuttonvalue = false end if not setupalready datagridview1.columns.add(datagridviewbuttoncolumn1) end if integer = 0 4 datagridview1.rows(i).cells("buttoncol").value = "hello" next setupalready = true end sub private sub datagridview1_cellcontentclick(sender object, e datagridviewcelleventargs) _ handles datagridview1.cellcontentclick debug.print(string.format("col={0}, row={1}, colname={2}", e.columnindex, e.rowindex, datagridview1.columns(e.columnindex).name)) if (datagridview1.rows.item(e.rowindex).cells("buttoncol").value "hello") datagridview1.rows.item(e.rowindex).cells("buttoncol").value = "goodbye" datagridview1.rows(e.rowindex).defaultcellstyle.backcolor = color.lightgreen end if end sub private sub button1_click(sender object, e eventargs) handles button1.click me.close() end sub end class
i think have convergence of several things causing this. first, forms classes , ought instanced explicitly. instead of form2.showdialog() this:
using frm new form2 ' create instance frm.showdialog ' end using ' dialogs resource using/ .dispose not needed normal forms because when close them, disposed of. not dialogs since unusually hide them can info them.
next, form_load event called first time show form. see msdn: occurs before form displayed first time.
so reusing non disposed-of form2, load event isnt called , code in load event isnt executed. should work fine if dispose of , create new form instances. btw applies forms, not dialogs.
.net vb.net winforms datagridview
Comments
Post a Comment