作者chjimmy (张郎)
看板C_Sharp
标题[问题] showdialog和visible的问题
时间Mon Apr 9 21:20:02 2012
因为想在子表单和父表单之间传值
第一时间用的是visible=true和false控制
但会变成父表单呼叫时直接执行到下面的事情(在某个地方显示回传值之类的)
(因为没有强制等子表单回应後再继续下去)
有人建议我用showdialog()
虽然可以强制将子表单叠到最上层 等收到回应後父表单才能继续
但因为在子表单里面会建立阵列和图(picturebox)
如果单单只有执行一次子表单还好
如果多跑几次showdialog()呼叫子表单
因为会重新执行form_load的动作 导致功亏一篑
两者之间优缺点刚好互补
简单整理就是:
用visible控制时,不会再重头从form_load事件开始执行
等於子表单是处於standby状态,东西都建立好了,就等处发事件
但呼叫子表单後的瞬间,父表单之後的事情却会抢在子表单前面做...
showdialog()可以强制等值回来才继续执行父表单後面的动作
但每次呼叫子表单却会从头执行form_load的事件,导致重新建立阵列和图(picurebox)
多次呼叫就会崩溃
而且至少会用到子表单六次 所以问题还不小
请问各位大大有什麽折衷的方法吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.54.109
※ 编辑: chjimmy 来自: 61.231.54.109 (04/09 21:24)
※ 编辑: chjimmy 来自: 61.231.54.109 (04/09 21:26)
※ 编辑: chjimmy 来自: 61.231.54.109 (04/09 21:32)
1F:→ jhchou:把阵列跟图建立在父表单 子表单只要负责读取然後显示如何? 04/09 21:33
自己回自己的文...
只要把只要执行一次的放在Form里就好 不要放在Form_load事件中 就只会执行一次
(里面有InitializeComponent();的那个)
这样看来 问题似乎已经解决了
※ 编辑: chjimmy 来自: 61.231.54.109 (04/09 22:34)