none
Retornando uma imagem default na picturebox RRS feed

  • Pergunta

  • Bom dia galera, tudo bem ? Estou com uma dúvida..

    Possuo um GridView e o mesmo ao clicar na linha desejada retorna a foto do usuário que estiver cadastrado no banco em uma Picturebox. Porém todas as linhas que eu estou clicando mesmo não tendo foto ele continua apresentando a ultima foto clicada. E eu gostaria que quando o usuário não tiver foto cadastrada no banco ele me retornasse uma imagem default da picture box :

    Trecho do código "Que ao clicar na linha desejada retorna a imagem na Picturebox"

    private void grade_visitantes_SelectionChanged(object sender, EventArgs e)
            {

                MemoryStream ms = new MemoryStream((byte[])grade_visitantes.CurrentRow.Cells[12].Value);
                picFoto.Image = Image.FromStream(ms);


            }


    Possuo esse método para a imagem default da picturebox :

     public void SemImagem()
            {
                picFoto.Image = Properties.Resources.not_available;

            }

    Imagino que seja algo mais ou menos assim : 

    Condição () 

    {

        Instrução !

    }


    Alguém poderia me ajudar? Desde já agradeço !

    terça-feira, 8 de dezembro de 2015 14:05

Respostas

  • Boa tarde.

    Depende muito do que tu estás mostrando na Grid.

    Coloque um breaking point nesta linha:

    picFoto.Image = Image.FromStream(ms);

    e veja qual o valor da propriedade .Length da MemoryStream quando o registro não possui imagem.

    Dependendo do valor, tu podes fazer:

    if (ms.Length > 0)
    {
                picFoto.Image = Image.FromStream(ms);
    }
    else
    {
     SemImagem();
    }

    Ou algo do tipo.

    Outra opção seria já mostrar na grid a imagem padrão; porém isso exigiria a manipulação da lista de dados ANTES de dar o Bind na Grid e, dependendo de como tua lógica foi construída, pode ser mais trabalhoso.


    Att., Rafael Simor


    • Marcado como Resposta Marcos SJ terça-feira, 8 de dezembro de 2015 16:22
    • Editado SimorC terça-feira, 8 de dezembro de 2015 16:30
    terça-feira, 8 de dezembro de 2015 16:05

Todas as Respostas

  • Boa tarde.

    Depende muito do que tu estás mostrando na Grid.

    Coloque um breaking point nesta linha:

    picFoto.Image = Image.FromStream(ms);

    e veja qual o valor da propriedade .Length da MemoryStream quando o registro não possui imagem.

    Dependendo do valor, tu podes fazer:

    if (ms.Length > 0)
    {
                picFoto.Image = Image.FromStream(ms);
    }
    else
    {
     SemImagem();
    }

    Ou algo do tipo.

    Outra opção seria já mostrar na grid a imagem padrão; porém isso exigiria a manipulação da lista de dados ANTES de dar o Bind na Grid e, dependendo de como tua lógica foi construída, pode ser mais trabalhoso.


    Att., Rafael Simor


    • Marcado como Resposta Marcos SJ terça-feira, 8 de dezembro de 2015 16:22
    • Editado SimorC terça-feira, 8 de dezembro de 2015 16:30
    terça-feira, 8 de dezembro de 2015 16:05
  • Não obtive sucesso ainda :(
    quarta-feira, 6 de janeiro de 2016 20:51