0
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    //bool sleected = false;

    if (dataGridView1.Rows[i].Cells[3].Value != null)
    {

        selected.Add(i);
    }

}
//string donew = "";


// line off error 
textBox1.Text = ((String)dataGridView1.Rows[1].Cells[2].Value);
/*  for (int i = 0; i < selected.Count; i++)
{

    textAdded.Add((String)dataGridView1.Rows[0].Cells[2].Value);
 //   donew += (String)dataGridView1.Rows[selected[i]].Cells[2].Value;
}*/

エラーが発生し続ける

タイプ'System.Double'のオブジェクトをタイプ'System.String'にキャストできません

これを克服するために私は何ができますか?

4

3 に答える 3

4

使用する代わりに

textBox1.Text = ((String)dataGridView1.Rows[1].Cells[2].Value);

使用する

textBox1.Text = dataGridView1.Rows[1].Cells[2].Value.ToString();

その理由は、明示的なキャストを試みるのに対し、doubleからstringへのキャストは存在しないが、幸いToString()メソッドは数値を文字列として出力するためです。

于 2012-10-08T15:34:44.847 に答える
1

さらに、foreachループを使用してさらに改良およびクリーンアップすることもできます。これにより、多くの場合、読みやすくなります。

また、一般的な方法として、これらのオブジェクトの名前は避けるtextBox1か、入力してください。dataGridView1現在適用されている特定の命名スキーマにより、不必要な悲しみを防ぎ、後で心配することができます。できるだけ早く入るのは良い習慣です。

foreach(DataGridViewRow r in dataGridView1.Rows)
{
    if (r.Cells[3].Value != null)
    {
        selected.Add(r);
    }
}
// line off error 
textBox1.Text = dataGridView1.Rows[1].Cells[2].Value.ToString();
于 2012-10-08T15:45:04.747 に答える
0

あなたはで試すことができます

dataGridView1.Rows[1].Cells[2].Value.ToString()
于 2012-10-08T15:36:48.467 に答える