Usuário com melhor resposta
Retornando uma imagem default na picturebox

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 !
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
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
-