C# .NET TreeView赢得';不显示图像
获取TreeView控件以显示节点图像时出现问题。下面的代码有时有效,但在其他时间无法显示任何图像C# .NET TreeView赢得';不显示图像,c#,.net,winforms,C#,.net,Winforms,获取TreeView控件以显示节点图像时出现问题。下面的代码有时有效,但在其他时间无法显示任何图像 private TreeNode AddNodeForCore(TreeNode root, Core c) { string key = GetImageKey(c); TreeNode t = root.Nodes.Add(c.Name, c.Name, key, key); t.Tag = c; return t; } 请注意,如果失败,TreeView将
private TreeNode AddNodeForCore(TreeNode root, Core c) {
string key = GetImageKey(c);
TreeNode t = root.Nodes.Add(c.Name, c.Name, key, key);
t.Tag = c;
return t;
}
请注意,如果失败,TreeView将无法显示任何节点的任何图像。TreeView确实有一个ImageList分配给它,图像键肯定在图像集合中
编辑:我的谷歌浏览器很弱。不敢相信我自己没有找到这个答案。谷歌快速搜索找到了这个答案: 引用该页中的: 如果包含TreeView的表单在外接程序启动函数中实例化,如下所示,则会出现图标 但是,如果使用类实例化,如下所示: 然后它们就不出现了。此外,如果禁用了“VisualStyles”(XP新增),则图标在这两种情况下都可以工作
事实上,谷歌在上面的帖子中提供了一些有用的信息: “这是Windows XP视觉样式实现中的一个已知错误。某些控件(如ImageList)在应用程序调用应用程序之前创建时,无法正确初始化。EnableVisualStyles()。C#的Program.cs中的常规Main()实现可避免此问题。感谢发回!”
因此,基本上,在初始化imagelist之前,确保调用Application.EnableVisualStyles()。根据[添加方法部分](在MSDN库中,您需要同时填充
TreeView.imagelist
和TreeView.SelectedImageList
,因为第四个参数指向第二个列表
如果在选择节点时出现此错误,请不要再进一步查看。Yossarian发布的解决方案和流行的“在Application.EnableVisualStyles()和Application.Run()之间调用Application.DoEvents()”对我来说都很有效 经过多次挥舞、咬牙切齿和谷歌搜索,由发布的解决方案成功了
public partial class ThisApplication
{
Form1 frm;
private void ThisApplication_Startup(object sender, System.EventArgs e)
{
frm = new Form1();
frm.Show();
}
public partial class ThisApplication
{
Form1 frm = new Form1();
private void ThisApplication_Startup(object sender, System.EventArgs e)
{
frm.Show();
}