PDA

View Full Version : سوال: تعریف آبجکت های یک UserControl بصورت Public



ashkan1234
دوشنبه 03 تیر 1392, 11:30 صبح
با سلام!
دوستان چطور میشه یکی از اشیایی یک یوزرکنترل رو بصورت سراسری تعریف کرد و در سایر فرمها ازش استفاده کرد؟
از قسمت Designer رفتم و همون کاری که واسه فرمهای معمولی میکردم رو کردم!یعنی کنترل رو از حالت Private به Public تغییر دادم!
حالا وقتی میخوام از اون کنترل سراسری در یکی از فرمها استفاده کنم،نمیشه!
نمونه گیری هم از کنترل کردم ولی باز هم نمیشه!
با سپاس!

alexmcse
دوشنبه 03 تیر 1392, 11:37 صبح
یوزر کنترل را به فرمت اضافه کن سپس مثلا
usercontrol1 در فرم ایجاد میشود کنترل لیبل
usercontrol1.lable1.text

ashkan1234
دوشنبه 03 تیر 1392, 11:40 صبح
یوزر کنترل را به فرمت اضافه کن سپس مثلا
usercontrol1 در فرم ایجاد میشود کنترل لیبل
usercontrol1.lable1.text

اگه میخواستم یوزر کنترل رو به فرم اضافه کنم که دیگه این تاپیک رو ایجاد نمیکردم!

alexmcse
دوشنبه 03 تیر 1392, 11:51 صبح
شکل آیکون فایل یوزر کنترل که در کنار آن در آبجکت بروزر است را نمایش دهید (عکس بگیرید )لطفا

ashkan1234
دوشنبه 03 تیر 1392, 12:10 عصر
شکل آیکون فایل یوزر کنترل که در کنار آن در آبجکت بروزر است را نمایش دهید (عکس بگیرید )لطفا

چیزی که من از سوالتون متوجه شدم جوابش اینه!
روی نام پروژتون در SolutionExplorer کلیک راست کنید=>Add=>وبعد اونجا User Control رو میبینید!آیکونش هم میبینید!

volcano_c
دوشنبه 03 تیر 1392, 14:16 عصر
سلام

برای هر کدوم از کنترل هایی که می خوای بهش دسترسی داشته باشی یک property مثل کد زیر تعرف کن مشکلت حل می شه

public Button btn
{
get { return button1; }
set { button1 = value; }
}



حالا با کد زیر رنگ button1 رو داخل usercontrol تغییر می شه داد

userControl11.btn.BackColor = Color.Red;

موفق باشی

ashkan1234
دوشنبه 03 تیر 1392, 14:35 عصر
سلام

برای هر کدوم از کنترل هایی که می خوای بهش دسترسی داشته باشی یک property مثل کد زیر تعرف کن مشکلت حل می شه

public Button btn
{
get { return button1; }
set { button1 = value; }
}



حالا با کد زیر رنگ button1 رو داخل usercontrol تغییر می شه داد

userControl11.btn.BackColor = Color.Red;

موفق باشی
ممنون!
الان در UserControl وقتی کد پابلیک رو تعریف میکنم به اون button1 در قسمت get و set و همچنین به value گیر میده!
البته نامش رو به نام کنترلی که میخواستم سراسری بشه تغییر دادم!ولی گیر میده!
اینطوری
public Button btn
{
get { return btnCount; }
set { btnCount = value; }
}
شما مطمینی با این روش جواب گرفتی؟

volcano_c
دوشنبه 03 تیر 1392, 17:50 عصر
بله که جواب گرفتم

این کار استاندارد هم هست

برای اینکه همه جا بخوای به مقادیر عمومی کلاس های دیگه دسترسی داشته باشی باید از property ها استفاده کنی

چه خطایی میده ؟؟؟؟

برام عکس خطا رو قرار بدید

volcano_c
دوشنبه 03 تیر 1392, 17:52 عصر
شما نوع کنترلی که می خواهید بهش دسترسی داشته باشید هم بگید

منتظرم

ashkan1234
دوشنبه 03 تیر 1392, 18:34 عصر
شما نوع کنترلی که می خواهید بهش دسترسی داشته باشید هم بگید

منتظرم
یه لیبل و یدونه button!
106116

volcano_c
دوشنبه 03 تیر 1392, 19:48 عصر
دوست من شما از button غیر از button مایکروسافت استفاده کردید

مشکل اینه که نمی شه تبدیل کرد

اگر از button های مایکروسافت استفاده می کنی باید از کلاس Button و اگر این طور نیست باید بحای کلاس Button از اسم کلاسی که استفاده کردی استفاده کنی


public Button btn
{
get { return btnCount; }
set { btnCount = value; }
}


به جای Button نام اون کلاس و بنویس مشکل حل می شه

برای Label هم از این استفاده کن


public Label lbl1
{
get { return lblcount; }
set { lblcount = value; }
}

ashkan1234
دوشنبه 03 تیر 1392, 20:12 عصر
دوست من شما از button غیر از button مایکروسافت استفاده کردید

مشکل اینه که نمی شه تبدیل کرد

اگر از button های مایکروسافت استفاده می کنی باید از کلاس Button و اگر این طور نیست باید بحای کلاس Button از اسم کلاسی که استفاده کردی استفاده کنی


public Button btn
{
get { return btnCount; }
set { btnCount = value; }
}


به جای Button نام اون کلاس و بنویس مشکل حل می شه

برای Label هم از این استفاده کن


public Label lbl1
{
get { return lblcount; }
set { lblcount = value; }
}


تشکر!ولی از باتن خود ماکروسافت استفاده میکنم!ولی خوب در کنارش از DevComponnet هم استفاده میکنم!
آره دقیقا همین باعث کانفلیگ بین باتنها میشه!
خوب کدرو اینجوری نوشتم و این مشکل حل شد:
public System.Windows.Forms.Button btn
{
get { return btnCount; }
set { btnCount = value; }
}
ولی خوب،باز همچنان مشکل باقیست!
یعنی توی فرم مورد نظر وقتی که میخوام ازش استفاده کنم،بازهم مثل قبل نمیشناستش ونمیاره!

ashkan1234
سه شنبه 04 تیر 1392, 15:39 عصر
دوستان!یه سورس کوچولو قرار میدم!
اگه چیزی میدونید در این مورد لطفا راهنمایی بفرمایید!
:لبخند:106155

volcano_c
سه شنبه 04 تیر 1392, 19:53 عصر
با چه کدی می خواهی بهش دسترسی داشته باشی که نمیشه ؟؟؟؟

ashkan1234
سه شنبه 04 تیر 1392, 20:33 عصر
با چه کدی می خواهی بهش دسترسی داشته باشی که نمیشه ؟؟؟؟
UserControl usr = new UserControl1();
usr.btn.Text = "123";
هر راهی که شما بفرمایید من همون راهو میرم تا به نتیجه برسم!:گیج:
ممنون که جواب میدید!:لبخند:

volcano_c
سه شنبه 04 تیر 1392, 20:52 عصر
خوب این که مشکلی نداره جواب میده

چه مشکلی داره ؟؟؟

دات نت چند استفاده می کنی ؟

ashkan1234
سه شنبه 04 تیر 1392, 20:57 عصر
خوب این که مشکلی نداره جواب میده

چه مشکلی داره ؟؟؟

دات نت چند استفاده می کنی ؟
خوب دیگه،دقیقا مشکل همینه!جواب نمیده!
2012
2010
تو هیچ کدوم جواب نمیده!
سورس رو بالا گذاشتم این کدرو بهش اضافه کنید ببینید جواب میده؟!!!

volcano_c
سه شنبه 04 تیر 1392, 21:11 عصر
داداش کد هاشم نوشتم

الان کار می کنه

تست هم کردم

توی 2012 از چه دات نت ی استفاده می کنی ؟؟؟؟ 2 یا 3 یا 4.5 ؟؟؟؟

اینم سورس با دات نت 4.5

ashkan1234
سه شنبه 04 تیر 1392, 21:25 عصر
داداش کد هاشم نوشتم

الان کار می کنه

تست هم کردم

توی 2012 از چه دات نت ی استفاده می کنی ؟؟؟؟ 2 یا 3 یا 4.5 ؟؟؟؟

اینم سورس با دات نت 4.5
دات نت منم 3.5 و 4.5 هستش!
فکر کنم یه سوتی کوچیک دادم!
داداش دمت گرم!
سوتی من این بود که موقع نمونه گیری از کنترل،نام یوزر کنترل رو ناقص نوشتم!
کد بالا رو یبار دیگه بنگرید!
یدونه 1 جا انداختم!

volcano_c
سه شنبه 04 تیر 1392, 21:56 عصر
دات نت منم 3.5 و 4.5 هستش!
فکر کنم یه سوتی کوچیک دادم!
داداش دمت گرم!
سوتی من این بود که موقع نمونه گیری از کنترل،نام یوزر کنترل رو ناقص نوشتم!
کد بالا رو یبار دیگه بنگرید!
یدونه 1 جا انداختم!


داداش اگر کمک دیگه ای خواستی خبرم کن

موفق باشی