Изображения Listview неуместны и иногда исчезают в winform C#
Я работаю над winforms, где у меня есть 2 кода, работающих на одно и то же, и они одинаковы только разница в запросах, но один работает совершенно нормально, а другой имеет проблемы, так как он неправильно помещает изображения. проблема в том, что каждый раз, когда я запускаю код, изображения находятся не в том месте. правильный функциональный код:
int c2 = -1; List<string> searchpath =new List<string>(); List<string> searchtitle = new List<string>(); listView2.Clear(); homerecipe.Clear(); searchtitle.Clear(); searchpath.Clear(); imageList3.Images.Clear(); var text = textBox1.Text; char[] separator = { ' ' }; string[] words = null; words = text.Split(separator); foreach (string word in words) { try { cmd = new SqlCommand($"select Title, Thumbnail,RecipeName from RecipeInfo where RecipeName like '%{word}%'", con); con.Open(); SqlDataReader read = cmd.ExecuteReader(); if (read.HasRows) { while (read.Read()) { // if (homerecipe.Any(item => item == read[2].ToString())) continue; searchtitle.Add(read[0].ToString()); searchpath.Add($@"{read[1].ToString()}"); homerecipe.Add(read[2].ToString()); } read.Close(); //con.Close(); foreach (string ipath in searchpath) { ListViewItem img = listView2.FindItemWithText(ipath); if (img == null) { imageList3.Images.Add(Image.FromFile(ipath)); } } listView2.LargeImageList = imageList3; foreach (string hometitle in searchtitle) { ListViewItem list = listView2.FindItemWithText(hometitle); if (list == null) { c2++; listView2.Items.Add(hometitle, c2); } } } con.Close(); } catch (SqlException) { MessageBox.Show("masla"); con.Close(); //continue; }
Проблемный код:
<pre>int ccc = -1; hometitles.Clear(); homepaths.Clear(); homerecipe.Clear(); imageList2.Images.Clear(); try { cmd = new SqlCommand("select Title, Thumbnail,RecipeName from RecipeInfo order by newid()", con); //generating random from sql con.Open(); SqlDataReader reader1 = cmd.ExecuteReader(); if (reader1.HasRows) { while (reader1.Read()) { hometitles.Add(reader1[0].ToString()); homepaths.Add($@"{reader1[1].ToString()}"); homerecipe.Add(reader1[2].ToString()); } } reader1.Close(); //con.Close(); foreach (string imagepath in homepaths) { ListViewItem img = listView2.FindItemWithText(imagepath); if (img == null) { imageList2.Images.Add(Image.FromFile(imagepath)); } } listView2.LargeImageList = imageList2; foreach (string hometitle in hometitles) { ListViewItem list = listView2.FindItemWithText(hometitle); if (list == null) { ccc++; listView2.Items.Add(hometitle,ccc); } } con.Close(); } catch(SqlException) { MessageBox.Show("error"); }
Иногда бывает так, что перемешиваются только изображения, иногда и текст, и изображение, но не правильное положение.
Мне очень жаль, что я не знаю, как написать здесь вопрос
Что я уже пробовал:
I have tried using the homerecipe elements as image key as they are primary key but I don't know how to give a condition in foreach that if one name entered then the same name don't come twice. for this, i was trying this <pre>foreach (string imagepath in homepaths) { foreach(string name in homerecipe) //name a primary key { ListViewItem img = listView2.FindItemWithText(imagepath); if (img == null) { MessageBox.Show(name); imageList2.Images.Add(name,Image.FromFile(imagepath)); } } } listView2.LargeImageList = imageList2; foreach (string hometitle in hometitles) { foreach (string name in homerecipe) { ListViewItem list = listView2.FindItemWithText(hometitle); if (list == null) { ccc++; listView2.Items.Add(hometitle, name); } } }
Я пытаюсь это сделать в течение последних 3 дней, пожалуйста, помогите мне исправить это. пожалуйста, я нахожусь в крайнем сроке для своего проекта, но этот вопрос не решается. Я новичок в программировании, пожалуйста, решите эту проблему.