PDA

View Full Version : سوال: پاس دادن datagridview و تغییر ناخواسته در اصل آن!!



Sal_64
شنبه 11 تیر 1390, 08:22 صبح
سلام

روی فرم اصلی یه دیتاگرید ویو دارم که با زدن یه دکمه فرم جدیدی که حاوی یه یوزرکنترل رو با کد نویسی ایجاد و باز میکنم
و دیتاگرید رو بهش پاس میدم
در فرم ایجاد شده باید بعضی از ستونهای دیتاگرید رو به انتخاب کاربر حذف کنم (با کد نویسی)
اما همرمان با حذف اون ستونها در دیتاگرید اصلی که زیر فرم فعلی و در فرم اصلی وجود داره هم حذف میشن
حتی در فرم جدید با کد نویسی دیتاگرید جدیدی ایحاد و دیتاگرید پاس داده شده رو بهش نسبت میدم
اما باز هم ستونهای دیتاگرید اصلی حذف میشن

چه باید کرد؟

تشکر

Sal_64
یک شنبه 12 تیر 1390, 11:35 صبح
چطور ممکنه شی ای که به فرم دیگه ای پاس داده شده و اونجا به شی جدید نسبت داده شده و با تغییر شی جدید روی شی اصلی هم تاثیر بذاره ؟
دوستان نظری ندارن

Esmail Solhkhah
یک شنبه 12 تیر 1390, 11:43 صبح
اگه ممکنه کد رو بزارید:متفکر:

Sal_64
یک شنبه 12 تیر 1390, 12:43 عصر
فرم اول

uc.set_datagridview =dgv ;
ff.ShowDialog();

فرم دوم

public DataGridView set_datagridview
{
set { dgv = value; }
}

DataGridView dgv3 =new DataGridView() ;
dgv3 = dgv;
dgv3.Columns.Remove("name");

با حذف کردن ستون نام در فرم دوم - همان ستون در فرم اول نیز پاک میشود!!!

اگه توضیح بیشتری هم نیازه بگید.

تشکر

Esmail Solhkhah
یک شنبه 12 تیر 1390, 20:20 عصر
دیتاگریدویو موقع پاس به عنوان پارامتر Reference Type در نظر گرفته میشه
مث اینکه یه ref موقع پاس کردن قبلش گذاشتی ، پس این امر طبیعیه

Sal_64
دوشنبه 13 تیر 1390, 06:56 صبح
دیتاگریدویو موقع پاس به عنوان پارامتر Reference Type در نظر گرفته میشه
مث اینکه یه ref موقع پاس کردن قبلش گذاشتی ، پس این امر طبیعیه

متوجه منظورتون نشدم
خب با این اوصاف به نظر شما چه باید کرد؟

تشکر

Esmail Solhkhah
دوشنبه 13 تیر 1390, 11:28 صبح
ببینید موقع پاس کردن پارامترها بصورت رفرنس :

یه کپی از پارامتر ارسالی ایجاد نمیشه بلکه تغییرات رو خود پارامتر اعمال میشه

در حالی که برای Value Type ها یه کپی ازش ساخته میشه و متد یا گیرنده از اون استفاده میکنه بدون تغییر در اصل پارامتر

در مورد گرید شما هم وضعیت اینطوره

یه سرچی تو MSDN Online بکنید