【问题标题】:Strange white area in panel c#面板c#中的奇怪白色区域
【发布时间】:2013-01-16 13:55:29
【问题描述】:

我的面板和奇怪的区域有问题。我用许多PictureBoxes 32x32px 填充我的面板,并且这个面板的一小部分区域被白色区域填充。

这是它的样子:

你可以看到第一个PictureBox指定了草地图片,是32x32px,但是下面的PictureBox只有一半的图片。很奇怪。

我还为PictureBoxes 指定了一个onClick 事件,以将其背景更改为其他图像。如果我点击“工作”PictureBox,它的背景会发生变化,但是当我点击“损坏”时,它不会。

所以基本上,我的问题是 - 造成这种影响的原因是什么?是否可以在不分析代码的情况下找到它?我想避免在此处放置代码,因为它非常复杂且冗长。

编辑

我使用了 WinSpy++,它就是结果(红点是我悬停光标的地方) 所以我们可以看到PictureBox 部分隐藏在这个白色区域的后面。

【问题讨论】:

  • 您在使用 Visual Studio 吗?如果您在 onClick 处理程序的开头放置一个断点并单击图标会发生什么?
  • @gt 是的,VS2012。当我设置断点并单击此损坏的PictureBox 时,它不会在此断点处停止,因此不会调用该方法。就像那些图片框不存在一样。
  • 在这种情况下,可能在创建它们时会引发异常。如果没有,那么它们可能会显示在其他地方,或者可能不可见。
  • @gt 但正如我们在他的照片上看到的,一些 PictureBox 处于半工作状态。其中一半被显示,另一半没有。
  • 好的,试试别的。看起来像一个面板叠加在盒子的顶部。尝试使用WinSpy++ 检查面板以确保它们位于应有的位置。

标签: c# image gdi picturebox


【解决方案1】:

我不知道这个问题是否仍然有效,但无论如何我都会尝试回复。更多的是对它的评论,但由于我不允许制作 cmets,所以我会回答。

我在使用onPaint 事件处理程序实现一些picutreBox 绘图时遇到了类似的问题。问题是我在onPaint 期间调用了pictureBox.Invalidate(),它导致显示不需要的白色框。如果有onPaint 事件,您可能希望避免在onPaint 事件中使用Invalidate()Refresh()

如果不是这种情况,刷新已损坏的formpictureBoxes 也可能会有所帮助。尝试在form 初始化之后调用this.Refresh(),最好在onLoadonShown 事件处理程序中调用。

如果它仍然没有帮助,那么问题出在其他地方,我猜想有一个隐藏在某个地方的控件导致了这个问题。但我们需要查看一些代码才能提出任何其他建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    相关资源
    最近更新 更多