Winforms Listbox或Listview图像和文本

时间:2012-12-29 14:47:16

标签: c# winforms

我对c#不是很有经验。我正在使用winforms,我正在寻找一种方法来创建类似于使用此模板的元素列表,类似于visual studio的自动完成列表。 有可能吗?我可以使用listbox或listview吗?

EDIT 抱歉,我的问题不明确我不想创建自动填充功能,但我想要创建的内容类似于this一个在该文本旁边带有图标的事物列表。

2 个答案:

答案 0 :(得分:0)

据我所知,您可以创建自定义UserControl或创建Form并将ListBox放入其中。如果使用From,请确保更改边框样式布局,只需将其设置为none即可。在创建使用它之后,您应该创建表单并将其显示在您想要的位置:

FrmAutoComplete x = new FrmAutoComplete();
x.Show();

您可以将此表单放在ToolTipItem中并显示它。

祝你好运。

答案 1 :(得分:0)

这是在Listview控件中使用图像的快速而肮脏的示例。因为我没有关于你打算做什么的很多信息,所以我试着保持简单。

简而言之,您需要将一些图像加载到Listview控件中内置的一个ImageLists(大或小)中,并为它们分配键,以便在添加它们时将它们分配给特定的列表项。

这方面的技巧是确定用于特定列表项的图像(假设根据一些区分因素将不同的图像分配给不同的列表项。对于此示例,我使用了“汽车”或“任意分配”卡车,“并简单地决定列表中的前五个项目将是汽车,最后五个项目将是卡车。我随后使用图像键适当地分配每个图像,因为我添加了每个listview项目。你可以这样做更多复杂的场景,使用图像键时,添加项目的顺序无关紧要。

对于此用例,您需要创建或使用尺寸为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);
        }
    }