Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么用户控件中的Visible属性没有正确更新?_C#_User Controls_Visibility_Scrollbars - Fatal编程技术网

C# 为什么用户控件中的Visible属性没有正确更新?

C# 为什么用户控件中的Visible属性没有正确更新?,c#,user-controls,visibility,scrollbars,C#,User Controls,Visibility,Scrollbars,有时我的UserControl的Visible属性无法正确更新。它发生在我的应用程序启动时,在OnFontChanged中,从InitializeComponent内部启动,可能是因为还没有设置其他东西。我就是不知道是什么 vScrollBar是一个用户控件,位于另一个用户控件内。显然,只有在尝试将值设置为true时才会发生这种情况。 vScrollBar已经创建了它的句柄,正如iSharedCreated上的一个手表所说的,这是真的。如果表单没有加载,它仍然可能显示false。尝试在窗体的O

有时我的UserControl的Visible属性无法正确更新。它发生在我的应用程序启动时,在OnFontChanged中,从InitializeComponent内部启动,可能是因为还没有设置其他东西。我就是不知道是什么

vScrollBar
是一个用户控件,位于另一个用户控件内。显然,只有在尝试将值设置为true时才会发生这种情况。
vScrollBar
已经创建了它的句柄,正如iSharedCreated上的一个手表所说的,这是真的。

如果表单没有加载,它仍然可能显示false。尝试在窗体的OnLoad事件中设置它。

读取Visible属性将为您提供控件的实际可见性状态,而不是“预期”状态。如果在InitializeComponent()方法中始终为false,则窗体或控件直到Load事件运行后才可见。如果容器控件不可见,它也将是错误的。

实际可行的解决方案,谢谢!哇,通过这种方式引入bug真的很容易。我设置Visible并将其放在下一行的if()中,认为它将是我刚刚设置的值。邪恶的东西@阿提卡:事实上,微软在.net中以某种方式做了一些事情并不总是意味着这是一个好主意。微软似乎无法决定是否拥有一个属性,该属性表示是否可以看到某个东西,或者某个东西是否允许自己被看到;事实上,如果属性被赋予不同的名称,它们会很有用,但是出于某种原因,微软决定使用一个名为
Visible
的属性,它的getter返回第一个属性,setter控制第二个属性。20世纪70年代的一些计算机在设计上有这样的问题,但人们从来没有学会。。。