私はC#の経験があまりありません。私はwinformsで作業しており、このテンプレートを使用して要素のリストのようなもの、ビジュアルスタジオのオートコンプリートリストのようなものを作成する方法を探しています. することは可能ですか?リストボックスまたはリストビューを使用する必要がありますか?
編集申し訳ありませんが、質問が明確ではありませんでした。オートコンプリートを作成したくありませんが、作成したいのは、このようなもののテキストの横にアイコンが付いたもののリストです。
これは、Listview コントロールで画像を使用する簡単で汚い例です。私はあなたが何をしようとしているのかについて多くの情報を持っていないので、私はシンプルにしようとしました.
つまり、いくつかの画像を Listview コントロールに組み込まれた ImageList (Large または Small) の 1 つにロードし、キーを割り当てて、追加するときに特定のリスト項目に割り当てることができるようにする必要があります。
これの秘訣は、特定のリスト項目に使用する画像を決定することです (何らかの差別化要因に応じて、異なるリスト項目に異なる画像が割り当てられていると仮定します。この例では、「車」または「トラック」の任意の割り当てを使用しました。リストの最初の 5 つの項目は車で、最後の 5 つの項目はトラックであると単純に決定しました.次に、各リストビュー項目を追加する際に image キーを使用して、各画像を適切に割り当てました.これは、より複雑なシナリオで行うことができます. image キーを使用する場合、アイテムが追加される順序は関係ありません。
この使用例では、16 x 16 ピクセルのサイズの画像を作成または使用する必要があります。プロジェクトのリソース ファイルに 2 つの画像を追加し、プロジェクトの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);
}
}
あなたの質問から私が理解しているように、カスタムをUserControl
作成するか、作成しForm
て入れることができますListBox
。From
境界線スタイルのレイアウトを必ず変更する場合は、なしに設定してください。使用するために作成した後、フォームを作成し、次のように必要な場所に表示する必要があります。
FrmAutoComplete x = new FrmAutoComplete();
x.Show();
このフォームを ToolTipItem に入れて表示できます。
幸運を。