


C# listView1 как загрузить данные?
Всем привет. Возникла проблема которую уже какой день не могу решить.
Есть программа, которая загружает изображения в listView.
Код:
Form1
public void LoadImage() // Метод
{
listView1.Items.Clear();
ImageList imageList = new ImageList();
imageList.ImageSize = new Size(100, 100);
listView1.LargeImageList = imageList;
listView1.View = View.LargeIcon;
string folderPath = @"d:\test\";
foreach (string imagePath in Directory.GetFiles(folderPath))
{
using (FileStream stream = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
{
Image image = Image.FromStream(stream);
imageList.Images.Add(image);
}
}
for (int index = 0; index < imageList.Images.Count; index++)
{
ListViewItem item = new ListViewItem { ImageIndex = index };
listView1.Items.Add(item);
}
}
Ну и при вызове этого метода в форме (Form1) все прекрасно работает. Изображения погружаются в ListView.
НО!
Когда я пытаюсь получить доступ из другой формы к этому методу, например:
Form1 form = new Form1();
form.LoadImage();
То изображения не выводятся в ListView хотя все циклы в методе отрабатывают.
Ну вот тут и вопрос, почему не происходит вывод изображения в ListView?
Привет! Похоже, проблема связана с тем, что вы создаете новый экземпляр `Form1`, когда вызываете метод `LoadImage()` из другой формы. Этот новый экземпляр не связан с уже существующим экземпляром `Form1`, который отображается на экране. Поэтому изменения, внесенные в новый экземпляр, не видны в уже отображаемой форме.
Чтобы решить эту проблему, вам нужно получить доступ к уже существующему экземпляру `Form1`. Один из способов сделать это - передать ссылку на текущий экземпляр `Form1` в другую форму. Вот пример, как это можно сделать:
1. В `Form1` добавьте метод для получения текущего экземпляра:
```csharp
public static Form1 Instance { get; private set; }
public Form1()
{
InitializeComponent();
Instance = this;
}
```
2. В другой форме используйте этот экземпляр для вызова метода `LoadImage()`:
```csharp
Form1.Instance.LoadImage();
```
Таким образом, вы будете вызывать метод `LoadImage()` на уже существующем экземпляре `Form1`, и изображения будут корректно отображаться в `ListView`.
Попробуйте этот подход и дайте знать, если возникнут дополнительные вопросы! 😊