C# resim kolonu ile ilgili

Bu konuyu okuyanlar

UgurOnline

Asistan
Katılım
11 Aralık 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
arkadaşlar veritabanında resim kolonu dolu olduğunda picturebox'ta gösteriyorum. ancak o kayda ait resim eklenmemiş ise picturebox doğal olarak hata veriyor. bunu nasıl engellerim?

bu kodla çekiyorum
Kod:
pictureBox1.Image = ana.profil_fotografi_cek();
bu da tanımladığım değişken
Kod:
public Image profil_fotografi_cek()
        {
            Image foto = null;
            byte[] byteFoto = (byte[])dataGridView1["profilfotografiDataGridViewImageColumn", dataGridView1.CurrentRow.Index].Value;
            using (MemoryStream ms = new MemoryStream(byteFoto, 0, byteFoto.Length))
            {
                ms.Write(byteFoto, 0, byteFoto.Length);
                foto = Image.FromStream(ms, true);
            }
            return foto;
        }
 

SiberWorm

Doçent
Katılım
3 Aralık 2009
Mesajlar
508
Reaksiyon puanı
5
Puanları
0
İlk önce boş olup olmadığını kontrol ettirmen lazım.
 

UgurOnline

Asistan
Katılım
11 Aralık 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
evet ama mesela şu kod ile denediğimde, resmi olmayan kayıtları açmıyor

Kod:
            if (ana.profil_fotografi_cek() != null)
            {
                pictureBox1.Image = ana.profil_fotografi_cek();
            }
            else
            {
                pictureBox1.Image = null;
            }

parameter is not valid hatası alıyorum
 

Champion78

Müdavim
Katılım
29 Eylül 2006
Mesajlar
1,716
Reaksiyon puanı
43
Puanları
48
picturebox1.image nesnesi null alamıyor büyük ihtimalle. bu problemi şöyle çözebilirsin (belki başka yolu da vardır), kendin bi default resim yaparsın (ör: resim yok yazılı bi resim), else kontrolünün içinde pictureBox1.ImageLocation=default.jpg şeklinde bir tanımlama yapabilirsin...
 

SiberWorm

Doçent
Katılım
3 Aralık 2009
Mesajlar
508
Reaksiyon puanı
5
Puanları
0
picturebox1.image nesnesi null alamıyor büyük ihtimalle. bu problemi şöyle çözebilirsin (belki başka yolu da vardır), kendin bi default resim yaparsın (ör: resim yok yazılı bi resim), else kontrolünün içinde pictureBox1.ImageLocation=default.jpg şeklinde bir tanımlama yapabilirsin...

Evet böyle olabilir.
 

UgurOnline

Asistan
Katılım
11 Aralık 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
malesef olmuyor. if else kısmına ne yazarsam yazayım açılırken parameter is not valid hatası alıyorum. hata anaformdaki şu satırda (kalın yazılı olan):

Kod:
public Image profil_fotografi_cek()
        {
            Image foto = null;
            byte[] byteFoto = (byte[])dataGridView1["profilfotografiDataGridViewImageColumn", dataGridView1.CurrentRow.Index].Value;
            using (MemoryStream ms = new MemoryStream(byteFoto, 0, byteFoto.Length))
            {
                ms.Write(byteFoto, 0, byteFoto.Length);
                [B]foto = Image.FromStream(ms, true);[/B]
            }
            return foto;
        }
 

Champion78

Müdavim
Katılım
29 Eylül 2006
Mesajlar
1,716
Reaksiyon puanı
43
Puanları
48
hiç memorystream kullanmadım ama problem ondan kaynaklanıyor olabilir belki. streamreader veya filestream falan denesen işe yarayabilir belki :s
 
Üst