[英]C# TabPage ImageIndex change
所以,我正在使用其他人的代码,我一直看到这种事情:
if (page.ImageIndex != 2)
{
page.ImageIndex = 2;
}
现在,从逻辑的角度来看,这似乎没有意义,所以我想知道当您更改他们不想触发的图像时是否会触发某种事件(我已经搜索过一个但是我没有看到 - 我看到了BackgroundImageChanged
,但这似乎是别的东西),或者如果设置ImageIndex
值,即使它相同,也会导致 flash 或闪烁,还是什么?
只是想知道我错过了什么。
谢谢大家!
更改 Windows Forms 控件的 ImageIndex 有时会产生意想不到的副作用。
您可以在这篇文章中看到类似的问题,其中 OP 在树视图中遇到节点意外崩溃
设置 SelectedImageIndex 时 treeview 中奇怪的自动折叠行为?
因此,以 TreeView 为例,更改 SelectedImageIndex 会导致整个树视图创建一个新的 window 句柄,重新绘制,并折叠除包含相关节点的节点之外的所有节点。
这里可能发生了同样的事情,检查 TabPage ImageIndex setter 的源代码可以确认这一点,因为它会导致整个选项卡控件的重绘:
set_ImageIndex() => UpdateParent() => parent.UpdateTab() => TabControl.UpdateTabSelection()
因为,当然,框架必须涵盖所有内容:
// After changing the Bounds of TabPages, we need to
// make TabPages Redraw.
// Use Invalidate directly here has no performance
// issue, since ReSize is calling low frequence.
tabPages[index].Invalidate();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.