2017-02-21 9 views
0

私はdatagridviewの魔女がsqlデータベースから値を取得していますが、datagridviewから1行をクリックすると、編集するテキストボックスにデータが表示されます。 問題は、編集可能な列の1つがイメージであることです。 私は、画像をアップロードして、データグリッドでそれを見るが、私が選択するように行ヘッダをCLICとき、私はエラーを取得することができます:コードが 「間違った形式で入力文字の文字列を」:!画像からdatagridviewから画像ボックス

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    ID = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString()); 

    MemoryStream ms = new MemoryStream((byte[])dataGridView1.CurrentRow.Cells[2].Value); 
    pictureBox1.Image = Image.FromStream(ms); 
    desc2.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString(); 
    tipo.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString(); 
    prumos.Text = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString(); 
} 

[[入力します画像の説明はこちら] [1]] [1] ありがとうございます。

+0

どのような正確な行で例外がありますか?これは画像よりもConvert.ToInt32に関連しているようです... –

+0

@OfirWinegarten残念ながら、システムは例外をスローしません。 私はエラーが発生するだけで、フォームが閉じ、前のフォームに戻ってきます。 – septaug

+0

@OfirWinegarten私は変換ラインをコメントしようとしましたが、エラーが出ます:System.string型のオブジェクトをSystem.byteに関連付けることはできません – septaug

答えて

1

最初の問題はConvert.ToInt32から来ており、画像とは関係ありません。テキストに数字だけが含まれていることを確認してください。

画像と第二の問題は次のように行うことができます: - : 正しい

var imageCell = (DataGridViewImageCell)dataGridView1.CurrentRow.Cells[2]; 
pictureBox1.Image = (Image)imageCell.Value; 

UPDATE上記のコメントに書かれたような問題は、間違った指標である

間違っていますコードは

MemoryStream ms = new MemoryStream((byte[])dataGridView1.CurrentRow.Cells[0].Value‌​); 
pictureBox1.Image = Image.FromStream(ms); 
+0

私はあなたの解決策を試みましたが、私は行末にエラーが表示されます: pictureBox1.Image = Image.FromStream((ImageCreation ImageCell.Value); はsystem.drawings.imageからsystem.IO.streamに変換できません – septaug

+0

エラーが発生しました。現在はうまくいくはずです –

+0

Grrrは引き続き同じエラーを表示します:\ フォームからスクリーンショットをアップロードしているかもしれません。理由 – septaug

関連する問題