Mam DataGridView
z kolumną obrazu. We właściwościach próbuję ustawić obraz. Klikam na zdjęcie, wybieram plik zasobu projektu, a następnie wybieram jeden z wyświetlanych obrazów. Jednak obraz nadal wyświetla się jako czerwony x w DataGridView? Ktoś wie dlaczego?Obraz kolumny obrazu Datagridview - C#
Odpowiedz
Na przykład masz formant DataGridView o nazwie "dataGridView1" z dwie kolumny tekstu i jedną kolumnę obrazu. Masz również obrazy w pliku zasobów o nazwie "image00" i "image01".
Możesz dodać obrazy podczas dodawania wierszy tak:
dataGridView1.Rows.Add("test", "test1", Properties.Resources.image00);
Można również zmienić obraz w czasie, gdy aplikacja jest uruchomiona:
dataGridView1.Rows[0].Cells[2].Value = Properties.Resources.image01;
czy można zrobić tak ...
void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dataGridView1.Columns[e.ColumnIndex].Name == "StatusImage")
{
// Your code would go here - below is just the code I used to test
e.Value = Image.FromFile(@"C:\Pictures\TestImage.jpg");
}
}
@Darren Young czy ty pls zostaw komentarz, jeśli to nie działa, a ja dostarczy więcej kodu dla tego .. –
Chociaż funkcjonalny, istnieje dość istotny problem z przedstawioną odpowiedzią. To sugeruje, ładowanie zdjęć bezpośrednio z Resources
:
dgv2.Rows[e.RowIndex].Cells[8].Value = Properties.Resources.OnTime;
Problemem jest to, że tworzy to nowy obraz przedmiotu za każdym razem, jak można zobaczyć w pliku projektanta zasobów:
internal static System.Drawing.Bitmap bullet_orange {
get {
object obj = ResourceManager.GetObject("bullet_orange", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
Jeśli istnieją 300 (lub 3000) wierszy o tym samym statusie, każdy nie potrzebuje własnego obiektu obrazu, ani nie potrzebuje nowego za każdym razem, gdy zdarzenie zostanie wywołane. Po drugie, wcześniej utworzone obrazy nie są usuwane.
Aby uniknąć tego wszystkiego, po prostu załadować obrazy zasobów do tablicy i zastosowania/przypisać stamtąd:
private Image[] StatusImgs;
...
StatusImgs = new Image[] { Resources.yes16w, Resources.no16w };
następnie w razie CellFormatting
:
if (dgv2.Rows[e.RowIndex].IsNewRow) return;
if (e.ColumnIndex != 8) return;
if ((bool)dgv2.Rows[e.RowIndex].Cells["Active"].Value)
dgv2.Rows[e.RowIndex].Cells["Status"].Value = StatusImgs[0];
else
dgv2.Rows[e.RowIndex].Cells["Status"].Value = StatusImgs[1];
Te same 2 obiekty graficzne są wykorzystywane dla wszystkich rzędów.
- 1. Wielu "kolumny" DataGridView C#
- 2. C# Datagridview nie sortuje kolumny Checkbox
- 3. datagridview indeks kolumny
- 4. Jak połączyć konkretny nagłówek kolumny w DataGridView C#?
- 5. Zmiana koloru czcionki kolumny w formancie DataGridView (wygaszacze C#)
- 6. WinForms C# DataGridView Wymuś odświeżenie
- 7. jak zmienić kolor kolumny w datagridview?
- 8. Jak ustawić maksymalną długość kolumny datagridview
- 9. Ukrywanie domyślny szare kolumny w DataGridView winform
- 10. Bitmapa w niektórych komórkach kolumny DataGridView
- 11. jak odczytać dane z jednej kolumny datagridview
- 12. Jak sformatować kolumny DateTime w DataGridView?
- 13. Wyłącz sortowanie po kliknięciu nagłówka kolumny DataGridView
- 14. C# wiersze wierszy datagridview?
- 15. C# - Zapisywanie DataGridView do pliku i ładowanie
- 16. Przewiń do dołu C# DataGridView
- 17. zmiana koloru nagłówka konkretnej kolumny tylko w datagridview
- 18. C# Obrót obrazu
- 19. C# Web.API Zwracanie obrazu. MemoryStream -> StreamContent zwraca obraz browken
- 20. C# kopiuj wklej region obrazu na inny obraz
- 21. Wyodrębnij obraz podrzędny z obrazu za pomocą C#
- 22. Utrata orientacji obrazu podczas konwertowania obrazu na obraz CGImage
- 23. Usuń kolumnę z DataGridView
- 24. Jak sortować kolumnę DataGridView?
- 25. Pobierz bieżący indeks kolumny komórki w DataGridView CurrentCellChanged Event
- 26. Pomoc przy dodawaniu kolumny checkbox do DataGridView w formie okna
- 27. Znajdź wiersz w dataGridView na podstawie kolumny i wartości
- 28. (datagridview) aktualizuje bazę kolorów wiersza w wierszu o wartości kolumny
- 29. Kolumny porządkowy zmieniać w trakcie pracy w DataGridView
- 30. Pobierz sumę kolumny datagridview za pomocą Linq dla odrębnego identyfikatora
chcesz załadować obraz z pliku zasobów .... –