listview ze zdjęciami

0

Witam ! Czy da się w listview w c# zrobić jedną kolumnę która zawierała by zdjęcia albo linki do nich po których kliknięciu zdjęcie by sie wyświetlało?

1

Zakładam że pytasz o Windows Forms. Nie za bardzo też rozumiem czy problemem jest dodawanie zdjęcia czy otwieranie zdjęcia po kliknięciu. Jeśli to pierwsze to albo wyświetl ListView w Image View i użyj przykładowego kodu lub jeśli chcesz to zrobić w Details View to napisz własną klasę dziedziczącą po ListView i napisz taką funkcjonalność lub użyj gotowej kontrolki.

Co do samego wyświetlania zdjęcia po kliknięciu- każda kontrolka w WindowsForms posiada właściwość Tag typu object. Możesz tam umieścić cokolwiek chcesz, tak więc w Twoim przypadku może to być ścieżka do pliku ze zdjęciem. Przykład jak odpalić takie zdjęcie po kliknięciu na ListViewItem:

 
        private void listView1_Click(object sender, EventArgs e)
        {
            //Bierzemy lokacje kursora relatywną do kontrolki
            Point p = listView1.PointToClient( Cursor.Position );

            //Bierzemy ListViewItem pod kursorem
            ListViewItem item = listView1.GetItemAt( p.X, p.Y );

            //Otwieramy zdjęcie
            System.Diagnostics.Process.Start( (string)item.Tag );
        }

To tak wyklepane na szybko. Zdjęcie zostanie odpalone w domyślnym programie, np. Photo Viewer. Oczywiście zawiń to w try-catch bo jeśli pliku nie da się otworzyć to zostanie rzucony wyjątek. Musisz też się upewnić że pod kursorem faktycznie znajduje się ListViewItem a nie zostało kliknięte puste pole. Jeśli chcesz by zdjęcie pojawiło się po kliknięciu tylko na zdjęciu to wygoogluj, powinno zając Ci to kilka minut.

EDIT: Dodałem komentarze do kodu.

0

a jak zmodyfikować ten kod aby zdjęcia wyświetlały się w 5 kolumnie mojej listview?

 

 this.lv_uczniowie.View = View.SmallIcon;

            this.imageList1.ImageSize = new Size(32, 32);

            this.lv_uczniowie.SmallImageList = this.imageList1;
            for (int j = 0; j < this.imageList1.Images.Count; j++)
            {
                ListViewItem item = new ListViewItem();
                item.ImageIndex = j;
                this.lv_uczniowie.Items.Add(item);
            }
0

Szczerze to nie jestem pewny ale chyba się tak nie da. Zawsze wyświetlałem tę kontrolkę w trybie Details. List View w trybie Small lub Large Icon jest dosyć prymitywne i ma pozwalać na łatwe wyświetlenie obrazków opcjonalnie z tekstem. Jeśli koniecznie potrzebujesz wyświetlić w N kolumnie to albo zaimplementuj włąsną ListView albo użyj gotowca. Jeśli robisz to dla nauki to proponuję pierwszą opcję, zawsze to nowe doświadczenie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1