场景如下:
我有一个复选框,当初始化表单时,该复选框的
Visible
属性设置为 false。
然后,在程序执行过程中,
Visible
属性设置为 true,程序继续正常运行。
但是,即使在显示表单时复选框可见,立即设置属性后,其值也不会更改。
我在here发布了一个视频来在调试过程中进行演示。
有人看过这个吗?
这是我第一次看到如此近距离的事情发生。
这是执行的代码:
1 | Using frm As New FormLicenseInput(Me, code, product)
2 | frm.Message = msg
3 | frm.CheckDontShow.Visible = _IsInitializing
4 | If frm.OpenDialog(ownerWindow) = DialogResult.Cancel Then
5 | Return Nothing
6 | End If
7 | End Using
属性在第 3 行更改,但在第 4 行,在调试期间检查时,其值未更改。
感谢 Olivier Jacot-Decombes 和 Jimi 指出解决方案。
只要表单的句柄(和控件的句柄)尚未创建,该属性(在本例中为
Visible
属性)仅存储在内部,外部无法使用。
(如果你问我的话,这是相当奇怪的设计解决方案。)