Winforms列表框或列表视图图像和文本
本文关键字:列表 文本 图像 Winforms 视图 | 更新日期: 2023-09-27 17:50:17
我对c#不是很有经验。我正在使用winforms,我正在寻找一种方法来创建类似于这个模板的元素列表,类似于visual studio的自动完成列表。有可能做到吗?我应该使用列表框还是列表视图?
编辑对不起,我的问题不是很清楚,我不想创建一个自动完成,但我想创建的是这样的东西,一个列表的东西,旁边的文本的图标。
根据您的问题,您可以创建自定义UserControl
或创建Form
并将ListBox
放入其中。如果你使用From
,确保你改变了边框样式布局,只需将其设置为none。创建后使用它,你应该创建表单,并显示在你想要的地方,像这样:
FrmAutoComplete x = new FrmAutoComplete();
x.Show();
你可以把这个表单放到ToolTipItem中并显示出来。
好运。
这是一个在Listview控件中使用图像的快速而粗糙的示例。因为我不知道你打算做什么,所以我尽量保持简单。
简而言之,你需要将一些图片加载到Listview控件内建的ImageLists (Large or Small)中,并为它们分配键,这样你就可以在添加它们时将它们分配给特定的列表项。
这里的技巧是确定为特定的列表项使用哪个图像(假设根据一些区分因素将不同的图像分配给不同的列表项)。对于这个例子,我使用了一个任意的"汽车"或"卡车"的分配,并简单地决定列表中的前五个项目是汽车,后五个是卡车。然后,我适当地分配每个图像,在添加每个listview项时使用image键。您可以为更复杂的场景执行此操作,并且在使用image键时,添加项的顺序无关紧要。
对于这个用例,您将希望创建或使用尺寸为16 x 16像素的图像。我继续往我的项目资源文件中添加了两个图像,然后使用项目Properties.Resources
名称空间简单地访问它们。还有其他的方法,但这对我来说是最方便的。
希望有帮助。
public partial class Form1 : Form
{
static string CAR_IMAGE_KEY = "Car";
static string TRUCK_IMAGE_KEY = "Truck";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.SetupListview();
this.LoadListView();
}
private void SetupListview()
{
var imgList = new ImageList();
imgList.Images.Add("Car", Properties.Resources.jpgCarImage);
imgList.Images.Add("Truck", Properties.Resources.jpgTruckImage);
var lv = this.listView1;
lv.View = View.List;
lv.SmallImageList = imgList;
}
private void LoadListView()
{
for(int i = 1; i <= 10; i++)
{
string currentImageKey = CAR_IMAGE_KEY;
if(i > 5) currentImageKey = TRUCK_IMAGE_KEY;
var item = this.listView1.Items.Add("Item" + i.ToString(), currentImageKey);
}
}