问题是,一旦SmallImageList设置为imgList1,它就永远不会 “释放”图标间距,即使SmallImageList设置为null也是如此。 无论是否有图标,该项目始终缩进。
任何解决方案?
答案 0 :(得分:4)
这是一件不寻常的事情,.NET ListView包装器无法处理它。您可以尝试重新创建本机Windows控件以重置它。不确定这会产生副作用,你必须尝试。在项目中添加一个新类并粘贴下面显示的代码。编译。从工具箱顶部删除新控件,替换原始控件。
using System;
using System.Windows.Forms;
class MyListView : ListView {
public new ImageList SmallImageList {
get { return base.SmallImageList; }
set {
base.SmallImageList = value;
if (value == null && base.IsHandleCreated) this.RecreateHandle();
}
}
}
答案 1 :(得分:0)
感谢汉斯的解决方案。下面的代码遵循他的示例,但使用反射调用RecreateHandle方法。
this.listView1.SmallImageList = null;
MethodInfo mInfo = this.listView1.GetType().GetMethod(
"RecreateHandle", BindingFlags.Instance | BindingFlags.NonPublic);
mInfo.Invoke(this.listView1, null);
HTH!