PDA

View Full Version : Object reference not set to an instance of an object



almanden
سه شنبه 16 مرداد 1386, 13:41 عصر
سلام
مشکل کد زیر چیه که ایراد زیرو میگیره

Object reference not set to an instance of an object

تو خط:
ch=(bool)dataGridView1.Rows[i].Cells[0].Value;


int rc = dataGridView1.Rows.Count;
bool ch = new bool();

for (int i = 0; i < rc-1; i++)
{

ch=(bool)dataGridView1.Rows[i].Cells[0].Value;

if (ch)
{
emailaddress += dataGridView1.Rows[i].Cells[3].Value.ToString()+",";
}

}


منمنونم

rasoul_ras
سه شنبه 16 مرداد 1386, 13:45 عصر
یعنی داری روی چیزی که null کار مکنی

almanden
سه شنبه 16 مرداد 1386, 14:09 عصر
وقتی به جای

ch=(bool)dataGridView1.Rows[i].Cells[0].Value;
از

ch=(bool)dataGridView1.Rows[1].Cells[0].Value;

استفاده میکنم ch مقدار دهی میشه ولی وقتی از i استفاده میکنم این error ظاهر میشه

once4ever
سه شنبه 16 مرداد 1386, 14:14 عصر
شما اول باید چک کنی که مقدار value برابر null نباشه
یکی از ساده ترین راههاش اینه:

if(dataGridView1.Rows[i].Cells[0].Value!=null)
ch=(bool)dataGridView1.Rows[1].Cells[0].Value;

hdv212
سه شنبه 16 مرداد 1386, 14:21 عصر
میتونی اول یه مقدار false به ch بدی.

اَرژنگ
سه شنبه 16 مرداد 1386, 16:00 عصر
وقتی به جای

ch=(bool)dataGridView1.Rows[i].Cells[0].Value;از

ch=(bool)dataGridView1.Rows[1].Cells[0].Value;استفاده میکنم ch مقدار دهی میشه ولی وقتی از i استفاده میکنم این error ظاهر میشه

دوست عزیز!
از خودت نپرسیدی که وقتی که تعداد روها صفره چی میشه؟:متفکر:

این خط :

bool ch = new bool();
را پاک کن، چونکه هیچ فایده‌ای و یا ربطی به این مشکل نداره!

once4ever
سه شنبه 16 مرداد 1386, 16:21 عصر
دوست عزیز!
از خودت نپرسیدی که وقتی که تعداد روها صفره چی میشه؟
اتفاقا این تیکه رو چک کردند;)

rasoul_ras
سه شنبه 16 مرداد 1386, 16:28 عصر
شما دارید مشکلو مشکلتر می کنید آقا شما با یک بار بازبینی دقیق برنامتون می فهمید که دارید روی یه چیز نال کار می کنید

almanden
سه شنبه 16 مرداد 1386, 17:55 عصر
من توی Cell[0] از checkbox استفاده کرده بودم اما نمی دونستم وقتی تیک نخورده باشه null حساب میشه
کدم حالا به شکل زیر درست کار میکنه


int rc = dataGridView1.Rows.Count;
bool ch=newbool() ;


for (int i = 0; i < rc-1; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value != null)
ch = (bool)dataGridView1.Rows[i].Cells[0].Value;
else
ch = false;
if (ch)
{
emailaddress += dataGridView1.Rows[i].Cells[3].Value.ToString()+",";
}

}






از همگی ممنونم

حامد مصافی
سه شنبه 16 مرداد 1386, 19:53 عصر
من توی Cell[0] از checkbox استفاده کرده بودم اما نمی دونستم وقتی تیک نخورده باشه null حساب میشه
احتمالاً هنگام ورود اطلاعات وقتی که مقدار گرفته شده false است مقداری وارد نمی کنی

در خط زیر یک آیتم رو از دست دادی:

for (int i = 0; i < rc-1; i++)



for (int i = 0; i < rc; i++)
یا

for (int i = 0; i < =rc-1; i++)