C#WinForms-ListViewItem图像未显示
对于每个C#WinForms-ListViewItem图像未显示,c#,winforms,listviewitem,C#,Winforms,Listviewitem,对于每个ListViewItem的图像都没有显示,我有一个相当小的问题。每个服务名称旁边都应该有一个图像,但没有显示应用程序。EnableVisualStyles()处于启用状态。我试着将资源图像设置为PictureBox,作为一种测试,效果不错。在designer中添加了两个列标题。为每个项目正确设置索引,还尝试分配ImageKey 已经阅读了这里的多个类似问题,但没有一个能解决这个问题 加载时完成ImageList的初始化 ImageList serviceLogoList = ne
ListViewItem
的图像都没有显示,我有一个相当小的问题。每个服务名称旁边都应该有一个图像,但没有显示<代码>应用程序。EnableVisualStyles()代码>处于启用状态。我试着将资源图像设置为PictureBox
,作为一种测试,效果不错。在designer中添加了两个列标题。为每个项目正确设置索引,还尝试分配ImageKey
已经阅读了这里的多个类似问题,但没有一个能解决这个问题
加载时完成ImageList的初始化 ImageList serviceLogoList = new ImageList
{
ImageSize = new Size(32, 32),
ColorDepth = ColorDepth.Depth32Bit
};
serviceLogoList.Images.Add(Properties.Resources.drive_logo);
serviceLogoList.Images.Add(Properties.Resources.dropbox_logo);
serviceLogoList.Images.Add(Properties.Resources.seeyou_logo);
listViewDisablableItemsServices.View = View.Details;
listViewDisablableItemsServices.LargeImageList = serviceLogoList;
listViewDisablableItemsServices.SmallImageList = serviceLogoList;
将图像分配到每一行
foreach (var service in _services)
{
if (service.ServiceType == Constants.SERVICE_TYPE_STORAGE)
{
ListViewItem item = new ListViewItem(service.Label);
item.SubItems.Add(service.ErrorOrInterpretedError ?? Lang.GetString("Common_OK"));
item.Tag = service;
switch (service.ServiceName)
{
case "google":
item.ImageIndex = 0;
break;
case "dropbox":
item.ImageIndex = 1;
break;
case "seeyou":
item.ImageIndex = 2;
break;
}
listViewDisablableItemsServices.Items.Add(item);
if (!service.IsAuthenticatedAndAvailable)
{
listViewDisablableItemsServices.DisableItem(item);
}
}
}
显示图像的位置我尝试创建一个类似的winform项目,但效果很好 我的示例代码:
ImageList serviceLogoList=新的ImageList
{
ImageSize=新尺寸(32,32),
ColorDepth=ColorDepth.Depth32位
};
serviceLogoList.Images.Add(Properties.Resources.p1);
servicelogolost.Images.Add(Properties.Resources.p2);
ListViewDisableItemsServices.View=View.Details;
ListViewDisableItemsServices.LargeImageList=serviceLogoList;
ListViewDisableItemsServices.SmallImageList=serviceLogoList;
ListViewItem1=新ListViewItem(“test1”);
item1.ImageIndex=0;
第1项。子项。添加(“XD1”);
ListViewItem2=新ListViewItem(“test2”);
item2.ImageIndex=1;
第2项。子项。添加(“XD2”);
ListViewDisableItemsServices.Items.Add(item1);
ListViewDisableItemsServices.Items.Add(item2);
我认为您的
开关
不能用于设置ImageIndex
。您可以添加Debug来检查是否设置了ImageIndex
。我尝试创建一个类似的winform项目,它可以正常工作
我的示例代码:
ImageList serviceLogoList=新的ImageList
{
ImageSize=新尺寸(32,32),
ColorDepth=ColorDepth.Depth32位
};
serviceLogoList.Images.Add(Properties.Resources.p1);
servicelogolost.Images.Add(Properties.Resources.p2);
ListViewDisableItemsServices.View=View.Details;
ListViewDisableItemsServices.LargeImageList=serviceLogoList;
ListViewDisableItemsServices.SmallImageList=serviceLogoList;
ListViewItem1=新ListViewItem(“test1”);
item1.ImageIndex=0;
第1项。子项。添加(“XD1”);
ListViewItem2=新ListViewItem(“test2”);
item2.ImageIndex=1;
第2项。子项。添加(“XD2”);
ListViewDisableItemsServices.Items.Add(item1);
ListViewDisableItemsServices.Items.Add(item2);
我认为您的
开关
不能用于设置ImageIndex
。您可以添加调试以检查是否设置了ImageIndex
。我认为您缺少添加列的功能
listViewDisablableItemsServices.Columns.Add("Name",100);
listViewDisablableItemsServices.Columns.Add("Status",100);
我发布的工作代码基于您的样本
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
List<StorageService> _services = new List<StorageService>();
public Form1()
{
InitializeComponent();
initializeListView();
}
private void Form1_Load(object sender, EventArgs e)
{
LoadServices();
listViewDisablableItemsServices.Columns.Add("Name",100);
listViewDisablableItemsServices.Columns.Add("Status",100);
foreach (var service in _services)
{
if (service.ServiceType == Constants.SERVICE_TYPE_STORAGE)
{
ListViewItem item = new ListViewItem(service.Label);
item.SubItems.Add(service.ErrorOrInterpretedError ?? Lang.GetString("Common_OK"));
item.Tag = service;
switch (service.ServiceName)
{
case "google":
item.ImageIndex = 0;
break;
case "dropbox":
item.ImageIndex = 1;
break;
case "seeyou":
item.ImageIndex = 2;
break;
}
listViewDisablableItemsServices.Items.Add(item);
if (!service.IsAuthenticatedAndAvailable)
{
//listViewDisablableItemsServices.DisableItem(item);
}
}
}
}
private void LoadServices()
{
_services.Add(new StorageService
{
ServiceType = "Storage",
Label = "Google",
ServiceName = "google",
IsAuthenticatedAndAvailable = false,
ErrorOrInterpretedError = "Sign up required"
});
_services.Add(new StorageService
{
ServiceType = "Storage",
Label = "Drop box",
ServiceName = "dropbox",
IsAuthenticatedAndAvailable = true
});
_services.Add(new StorageService
{
ServiceType = "Storage",
Label = "See You",
ServiceName = "seeyou",
IsAuthenticatedAndAvailable = true
});
}
private void initializeListView()
{
ImageList serviceLogoList = new ImageList
{
ImageSize = new Size(32, 32),
ColorDepth = ColorDepth.Depth32Bit
};
serviceLogoList.Images.Add(Properties.Resources.drive_logo);
serviceLogoList.Images.Add(Properties.Resources.dropbox_logo);
serviceLogoList.Images.Add(Properties.Resources.seeyou_logo);
listViewDisablableItemsServices.View = View.Details;
listViewDisablableItemsServices.LargeImageList = serviceLogoList;
listViewDisablableItemsServices.SmallImageList = serviceLogoList;
}
}
class StorageService
{
public string ServiceType { get; set; }
public string ServiceName { get; set; }
public string Label { get; set; }
public string ErrorOrInterpretedError { get; set; }
public bool IsAuthenticatedAndAvailable { get; set; }
}
class Constants
{
public const string SERVICE_TYPE_STORAGE = "Storage";
}
class Lang
{
public static string GetString(string key)
{
return "OK";
}
}
}
namespace WindowsFormsApp1
{
公共部分类Form1:Form
{
列表_服务=新列表();
公共表格1()
{
初始化组件();
初始化列表视图();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
LoadServices();
ListViewDisableItemsServices.Columns.Add(“名称”,100);
ListViewDisableItemsServices.Columns.Add(“状态”,100);
foreach(var服务在_服务中)
{
if(service.ServiceType==常量.service\u TYPE\u存储)
{
ListViewItem项=新的ListViewItem(service.Label);
item.SubItems.Add(service.error或interpretecderror??Lang.GetString(“Common_OK”);
item.Tag=服务;
交换机(service.ServiceName)
{
案例“谷歌”:
item.ImageIndex=0;
打破
案例“dropbox”:
item.ImageIndex=1;
打破
案例“seeyou”:
item.ImageIndex=2;
打破
}
ListViewDisableItemsServices.Items.Add(项目);
如果(!service.isAuthenticatedAvailable)
{
//ListViewDisableItemsServices.DisableItem(项目);
}
}
}
}
专用void LoadServices()
{
_添加(新的存储服务)
{
ServiceType=“存储”,
Label=“谷歌”,
ServiceName=“谷歌”,
IsAuthenticatedAvailable=false,
ErrorOrInterpretecderRor=“需要注册”
});
_添加(新的存储服务)
{
ServiceType=“存储”,
Label=“下拉框”,
ServiceName=“dropbox”,
IsAuthenticatedAvailable=true
});
_添加(新的存储服务)
{
ServiceType=“存储”,
Label=“再见”,
ServiceName=“再见”,
IsAuthenticatedAvailable=true
});
}
私有void initializeListView()
{
ImageList serviceLogoList=新的ImageList
{
ImageSize=新尺寸(32,32),
ColorDepth=ColorDepth.Depth32位
};
serviceLogoList.Images.Add(Properties.Resources.drive\u徽标);
serviceLogoList.Images.Add(Properties.Resources.dropbox\u logo);
serviceLogoList.Images.Add(Properties.Resources.seeyou\u logo);
ListViewDisableItemsServices.View=View.Details;
ListViewDisableItemsServices.LargeImageList=serviceLogoList;
ListViewDisableItemsServices.SmallImageList=serviceLogoList;
}
}
类存储服务
{
公共字符串服务类型{get;set;}
公共字符串ServiceName{get;set;}
公共字符串标签{get;set;}
公共字符串ErrorOrInterpreterError{get;set;}
公共布尔值已验证且可用{get;set;}
}
类常数
{
公用常量字符串服务\u TYPE\u STORAGE=“STORAGE”;
}
朗班
{
公共静态字符串GetString(字符串键)
{
返回“OK”