Winforms列表框或列表视图图像和文本

本文关键字:列表 文本 图像 Winforms 视图 | 更新日期: 2023-09-27 17:50:17

我对c#不是很有经验。我正在使用winforms,我正在寻找一种方法来创建类似于这个模板的元素列表,类似于visual studio的自动完成列表。有可能做到吗?我应该使用列表框还是列表视图?

编辑对不起,我的问题不是很清楚,我不想创建一个自动完成,但我想创建的是这样的东西,一个列表的东西,旁边的文本的图标。

Winforms列表框或列表视图图像和文本

根据您的问题,您可以创建自定义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);
        }
    }