PDA

View Full Version : سوال: چگونگی ایجاد یک property ه Data source برای یک Mdi children form؟



Directx
شنبه 13 فروردین 1390, 18:21 عصر
سلام
راستش یه برنامه دارم می نویسم که فرم اصلیم دارای چند تا children form ه الان لازم شده که هرکدوم از این فرمها یه خاصیت از نوع Data source مثل data grid داشته باشن یکی از راههایی که استفاده کردم اینه که من یه فرم درست کردم و یه data grid بهش اضافه کردم حالا می خوام اون فرمم همون خاصیت data source مربوط به data grid رو داشته باشه

m.soleimani
شنبه 13 فروردین 1390, 20:41 عصر
سلام
راستش یه برنامه دارم می نویسم که فرم اصلیم دارای چند تا children form ه الان لازم شده که هرکدوم از این فرمها یه خاصیت از نوع Data source مثل data grid داشته باشن یکی از راههایی که استفاده کردم اینه که من یه فرم درست کردم و یه data grid بهش اضافه کردم حالا می خوام اون فرمم همون خاصیت data source مربوط به data grid رو داشته باشه

درست متوجه منظورت نشدم ولی برای این که همه فرم‌هایی که داری خاصیت‌های یکسانی داشته باشند از ارث‌بری استفاده کن اگر منظورت این نبوده بیشتر توضیح بده موفق باشی./

Directx
شنبه 13 فروردین 1390, 21:28 عصر
نه خیر دوست عزیز شما فرم رو مثل یه user control در نظر بگیرید که یه property داره به اسم data source احتمالا متوجه شدی منظورم چیه
تشکر

Directx
یک شنبه 14 فروردین 1390, 11:29 صبح
کسی نیست بعد دو روز جواب ما رو بده

Roia_del
یک شنبه 14 فروردین 1390, 12:00 عصر
دوست عزیز، شما باید ی کلاس بسازین که قابلیت Datasource بودن رو داشته باشه مثلا از کلکسیون ها استفاده کنین یا از همه بهتر DataTable , DataSet. بعد هر فرمی رو که خواستین دارای این قابلیت باشه باید از اون کلاستون ارث ببره.




public class DataSourceForm:System.Windows.Form
{
private DataTable dt;
public DataTable DataSource
{
get{return dt;}
set{dt=value;}
}
}



و اما هر فرمی که خواستین ارث ببره
بالای فرم که از Form ارث می بره رو به DataSourceForm تغییر بده.

Directx
یک شنبه 14 فروردین 1390, 12:23 عصر
ببنید دوست عزیز اولا که این کلاسی که شما تعریف کردین و data source داره اونdata sourc ی که من می خوام نیست این فقط data table رو به عنوان source قبول می کنه من می خوام جامع باشه و بشه به همه ی منابع داده ای وصل بشه در ضمن می دونم که این کار تا حدود زیادی عملی نیست و شبیه اینکه بیاییم یه data grid رو از اول بسازیم ولی من خودم گفتم که یه data grid به فرم اضافه کردم و می خوام که فرم یه property داشته باشه که در اصل همون property ه data grid باشه در ضمن این راه هم می دونم که میشه grid و عمومی تعریف کنیم که بشه به راحتی بهش درسترسی پیدا کرد ولی من می خوام که کلاس کاملا ایزوله باشه و نشه به غیر از data sourcce به خاصیت دیگه ای از grid دست پیدا کرد دوستا دیگه باید متوجه شده باشند
تشکر

Roia_del
دوشنبه 15 فروردین 1390, 11:19 صبح
خوب شما می تونین یه کار دیگه بکنین : اون پروپرتی بالا که من از نوع DataTable در نظر گرفته ام رو شما object در نظر بگیر. این طوری مشکل شما حل میشه.



public class DataSourceForm:System.Windows.Form
{
private object dt;
public object DataSource
{
get{return dt;}
set{dt=value;}
}
}




در ضمن می تونین با کیورد is نوع object رو هم در بیارین. البته نیاز به type Casting هم احتمالا نداشته باشین چون پروپرتی DataSource برای DataGrid خودش object هست و typeCasting رو خودش انجام میده اگه جواب نداد خودت زحمت typeCasting رو بکش :




if(value is DataTable)
{
DataGrid1.DataSource=value as DataTable;
}
else if(value is DataSet)
{
DataGrid1.DataSource=value as DataSet;
}




این دوتا رو امتحان کن حتما جواب میده. موفق باشین.