为什么 UserControl 中的 Visible 属性未正确更新?

发布于 2024-09-24 15:36:08 字数 353 浏览 5 评论 0原文

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

alt text

vScrollBar 是一个 UserControl,位于另一个 UserControl 内。显然,这只在尝试将值设置为 true 时才会发生。 vScrollBar 已经创建了它的句柄,IsHandleCreated 上的观察表明这是真的。

Sometimes my UserControl's Visible property does not get updated correctly. It happens at my app's boot time, in OnFontChanged, fired from inside InitializeComponent, probably because some other stuff has not been set up yet. I just can't find out what.

alt text

vScrollBar is a UserControl and is inside another UserControl. Apparently, this only happens when trying to set the value to true.
vScrollBar already has its handle created, as a watch on IsHandleCreated says it's true.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

離殇 2024-10-01 15:36:08

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

Reading the Visible property gives you the actual visibility state of the control, not the 'intended' state. Which will always be false in the InitializeComponent() method, the form or control isn't visible yet until after the Load event runs. It will also be false if the container control isn't visible.

月下伊人醉 2024-10-01 15:36:08

如果表单尚未加载,它可能仍显示 false。尝试在表单的 OnLoad 事件中设置它。

It may still show false if the Form has not loaded. Try setting it in the Form's OnLoad event.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文