【问题标题】:Disposing Label only removes Text WinForm处理标签仅删除文本 WinForm
【发布时间】:2018-10-06 14:08:01
【问题描述】:

所以我创建标签运行时,但出于某种原因,当我处理它们时:

Content.Dispose();
Header.Dispose();

背景颜色仍然是我连接到它的所有事件。此外,当将它们从控件中删除时,它们仍然会保留:

除此之外,我还尝试在表单上使用 Update 方法,但除了短暂的“眨眼”之外没有任何变化。这让我发疯了好几个小时。

【问题讨论】:

  • 在不到 30 行的小程序中重现此内容。换句话说,创建一个合适的minimal reproducible example。目前无法回答。
  • 反正已经回答了,谢谢!

标签: c# winforms graphics controls


【解决方案1】:

您必须从表单的Controls 集合中删除标签。

Content.SomeEvent -= Content_SomeEvent; // Unhook event handlers.
Controls.Remove(Content);
Content.Dispose();

Controls.Remove(Header);
Header.Dispose();

显然(根据评论)问题在于标签被创建了两次。

【讨论】:

  • 另外,我在不同的类中拥有所有逻辑,并且在类的构造函数中获得了 Controls 集合。
  • 我也退订了所有活动,也没有用。
  • 即使让它们不可见也无济于事。
  • 我刚做了一个测试。它对我有用(仅删除和处置)。您确定背景颜色来自标签吗?还是某些容器控件的颜色?标签是直接在表单上还是包含在另一个控件中(如 TabControl、Panel 等)?
  • 好的,由于某种原因,标签似乎被创建了两次,我会将您的标签标记为答案,谢谢您的帮助:)
猜你喜欢
  • 2016-04-16
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多