Csharp/C#教程:为什么不是this.Hide()在Form1_load事件中工作?分享


为什么不是this.Hide()在Form1_load事件中工作?

我实际上有一个经典的Windows窗体和一个按钮。 我有这个代码

private void Form1_Load(object sender, EventArgs e) { this.Hide(); this.Visible = false; } private void button1_Click(object sender, EventArgs e) { this.Hide(); } 

我想知道为什么在加载后不会隐藏表单,但是当我点击该按钮时它会起作用? 有人可以解释一下吗?

在窗体实际可见之前会触发Load事件。 尝试使用Form.Shown事件。 当窗体实际绘制在屏幕上时,这将触发。

因为您在显示表单之前调用Hide()。

https://msdn.microsoft.com/en-us/library/86faxx0d.aspx

可见属性对表单来说是一个非常大的问题。 与传统的.NET编程模型联系在一起,只在最后一刻分配资源。 懒。

Load事件在创建本机Windows窗口之后立即触发,就在用户可见之前。 设置Visible = true的行为会触发此事件链。 或者更典型地,调用Show()方法。 完全相同的事情。 直到那时本机窗口才重要。

但是这有副作用,在设置Visible = true的过程中,你不能将Visible设置为false(或调用Hide,同样的东西)。 这就是你的代码不起作用的原因。

如果您有NotifyIcon并且在用户单击图标之前不想使窗口可见,则可以获得您想要的内容,而不是非常不寻常。 在创建表单之前,NI无法工作。 使它看起来像这样:

  protected override void SetVisibleCore(bool value) { if (!IsHandleCreated && value) { base.CreateHandle(); value = false; } base.SetVisibleCore(value); } 

这让你第一次调用Show()但实际上没有得到一个可见的窗口。 在此之后它表现正常。 请注意Load事件不会运行,最好不要使用它。

上述就是C#学习教程:为什么不是this.Hide()在Form1_load事件中工作?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/950940.html

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐