Проблема в вашем do {} while (true) l oop, особенно в следующем фрагменте:
if (!int.TryParse(Disp.Text, out id))
{
Disp2.Text = ("Enter number or '00' ");
continue;
}
В вашем l oop вы проверяете следующее условие:
int.TryParse(Disp.Text, out id)
Но внутри вашего l oop это условие никогда не меняется (Disp.Text всегда один и тот же), и поэтому существует по крайней мере один возможный случай, когда l oop никогда не останавливается.
Вы может заменить «продолжить» на «перерыв»:
if (!int.TryParse(Disp.Text, out id))
{
Disp2.Text = ("Enter number or '00' ");
break;
}
Я не совсем уверен, что на самом деле вы пытаетесь выполнить sh, но, похоже, вам также следует заменить:
{
Disp2.Text = (id + " is not available");
}
with:
{
Disp2.Text = (id + " is not available");
break;
}
Однако, поскольку Disp.Text не изменяется и STOCKDict может иметь только одну запись с уникальным ключом do /, в то время как l oop не требуется вообще и следующий код будет делать работу, не сталкиваясь с бесконечным l oop:
List<Items>() selecteditems = new List<Items>();
private void Enter_Click(object sender, EventArgs e)
{
var STOCKDict = STOCK.ToDictionary(x => x.id);
int id;
if (!int.TryParse(Disp.Text, out id))
{
Disp2.Text = ("Enter number or '00' ");
}
else
{
if (STOCKDict.ContainsKey(id))
{
var item = STOCKDict[id];
selecteditems.Add(item);
Disp2.Text = (item.Name);
}
else
{
Disp2.Text = (id + " is not available");
}
}
}