i have a listbox that adds the ids from a dictionary to the listbox but i need it to display the name and not the id but the value of the item has to be the id is there any way to do this heres the code i use
public static Dictionary<int, CardInfos> CardDataeff = new Dictionary<int, CardInfos>();
private void textBox2_TextChanged(object sender, EventArgs e)
{
lock (Searchlock)
{
if (textBox2.Text == "")
{
listBox2.Items.Clear();
return;
}
if (textBox2.Text != "Search")
{
listBox2.Items.Clear();
foreach (int card in CardDataeff.Keys)
{
if (CardDataeff[card].Id.ToString().ToLower().StartsWith(textBox2.Text.ToLower()) ||
CardDataeff[card].Name.ToLower().Contains(textBox2.Text.ToLower()))
{
listBox2.Items.Add(CardDataeff[card].Id.ToString());
}
}
}
}
}
public void listBox2_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
bool selected = ((e.State & DrawItemState.Selected) == DrawItemState.Selected);
int index = e.Index;
if (index >= 0 && index < listBox2.Items.Count)
{
string text = listBox2.Items[index].ToString();
Graphics g = e.Graphics;
CardInfos card = CardDataeff[Int32.Parse(text)];
g.FillRectangle((selected) ? new SolidBrush(Color.Blue) : new SolidBrush(Color.White), e.Bounds);
// Print text
g.DrawString((card.Name == "" ? card.Id.ToString() : card.Name), e.Font, (selected) ? Brushes.White : Brushes.Black,
listBox2.GetItemRectangle(index).Location);
}
e.DrawFocusRectangle();
}
private bool LoadCard(int cardid)
{
if (!CardDataeff.ContainsKey(cardid))
{
return false;
}
CardInfos info = CardDataeff[cardid];
if (!string.IsNullOrEmpty(this.richTextBox1.Text))
{
if (MessageBox.Show("do you want to save? ", "Prompt", MessageBoxButtons.YesNoCancel) == DialogResult.Yes)
{
if (string.IsNullOrEmpty(this.filePath))
{
this.saveFileDialog1.InitialDirectory = this.scriptFolderPath;
this.saveFileDialog1.FileName = this.getFileName();
if (this.saveFileDialog1.ShowDialog() != DialogResult.OK)
this.saveFile(this.saveFileDialog1.FileName);
}
else
{
this.saveFile(this.filePath);
}
}
}
this.openFile(cdbdir + "\\script\\c" + cardid + ".lua");
return true;
}
private void listBox2_DoubleClick(object sender, EventArgs e)
{
ListBox list = (ListBox)sender;
if (list.SelectedIndex >= 0)
{
LoadCard(Int32.Parse(list.SelectedItem.ToString()));
}
}
i included all code that i think is necessary