我对c#不是很有经验。我正在使用winforms,我正在寻找一种方法来创建类似于使用此模板的元素列表,类似于visual studio的自动完成列表。 有可能吗?我可以使用listbox或listview吗?
EDIT 抱歉,我的问题不明确我不想创建自动填充功能,但我想要创建的内容类似于this一个在该文本旁边带有图标的事物列表。
答案 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);
}
}