PDA

View Full Version : سوال: دسترسی به اعضای یوزر کنترل



IMANAZADI
چهارشنبه 30 آذر 1390, 10:45 صبح
با سلام
چند سوال داشتم ممنون میشم راهنمایی کنید

1- چطوری میشه به شی های در یک user control دسترسی پیدا کرد مثلا من یک یوزر کنترل ساختم که توی اون 2 تا تکس باکس هست
حالا در یک برنامه این یوزرکنترل رو اضافه کردم چطوری میتونم به محتویات تکس باکس ها دسترسی داشته باشم

2- یک یوزر کنترل رو در نظر بگیرید که روی اون 5 عدد چک باکس و یک عدد تکس باکس هست میخوام وقتی هر کدوم از چک باکس ها تیک خورد در تکس باکس تعداد چک باکس ها تیک خورد نشون داده بشه و با برداشتن تیک چک باکس تعداد چک باکس های تیک خورد نشون داده بشه
من اینکار رو با دستورات تو در توی if نوشتم ولی میخوام ببینم آیا میشه با استفاده از نوشتن متد و آرایه ها اینکار رو کرد یعنی پارامتر های تابع آرایه ایی از چک باکس ها باشه

AliSaeedi_v
چهارشنبه 30 آذر 1390, 10:54 صبح
سلام تو سورس کد کامپوننتت باید خاصیت modifire تکس باکس هارو publicبزاری تا موقع استفاده بهشون دسترسی داشته باشی
موفق باشی!

gwbasic
چهارشنبه 30 آذر 1390, 11:39 صبح
پیشنهاد می کنم قبل از ساختن userControl به این فکر کنید که این UC قراره چه کاری رو انجام بده.
اگه userControl شما قرار اون کاری رو که گفتین انجام بده ( با تیک خوردن checkBox ها تعدادشون در textbox نمایش داده بشه) خوب باید این کارو خود userControl انجام بده نه کلاینتی که داره از این userControl استفاده می کنه!!!
ارتباط UC شما با دنیای خارج باید از طریق تعریف Interface شما صورت بگیره و یا حداقل پراپرتی هایی وجود داشته باشه که به صورت public باشند و با دنیای بیرون ارتباط داشته باشن. نه اینکه کنترل های UC تون رو بطور مستقیم در اختیار client قرار بدین.
هر جا هم نیاز بود که رفتاری توسط کلاینت انجام بشه بهتره تسط interface و یا event ها این کار به کلاینت محول بشه.
بطور خلاصه باید بگم UC فقط یک سری کنترل داخل یک container نیست بلکه منطق پشت این کنترل ها رو نیز باید هندل کنه. تا وقتی با این مفاهیم آشنا نشدید بکار گیری UC کمکی که نمی کنه بلکه ممکنه کد شما رو هم پیچیده کنه. برای یاد گیری بهتر بعد از یاد گیری مفاهیم از کدهای نوشته شده توسط دیگران استفاده کنید. دیدن این تاپیک خالی از لطف نیست
http://barnamenevis.org/showthread.php?308095-%DA%86%DA%AF%D9%88%D9%86%DA%AF%DB%8C-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-UserControl-%D9%88-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-TreeView

IMANAZADI
چهارشنبه 30 آذر 1390, 13:01 عصر
با تشکر از دوستان کسی جواب سوال 2 رو نداشت بده ؟؟

IMANAZADI
چهارشنبه 30 آذر 1390, 16:34 عصر
کسی از دوستان نیست راهنمایی کنه ؟

IMANAZADI
پنج شنبه 01 دی 1390, 11:01 صبح
اینجاست که آرایه ها آدمو گیر میندازه

az.heidarzadeh
پنج شنبه 01 دی 1390, 12:00 عصر
سلام، چرا نشه
میتونی آرایه ات رو از هر نوعی که میخوای تعریف کنی امتحانش میکردی ضرری نداشت. نباید از انجام دادن سوال هایی که توی ذهنمونه بترسیم...


CheckBox[] chk = new CheckBox[10];
chk[1].Checked = true;

IMANAZADI
پنج شنبه 01 دی 1390, 13:04 عصر
دوست گرامی ممنون ولی منظور من این نبود اینو که خودم میدونستم
گفتم چطوری میشه تابع واسش نوشت این کد شما ده تا چک باکس ایجاد میکنه و اونا رو تیک میزنه
تابعی که پارامتر اون ارایه ای از چکس باکس باشه
و تعداد تیک خورده ها رو درون تکس باکس نشون بده

az.heidarzadeh
پنج شنبه 01 دی 1390, 13:40 عصر
اگه حالت چک باکس های شما مثل آرایه است یعنی مثلا میخواین تو قسمت نحوه دسترسی ازش استفاده کنید چرا از checkBoxList استفاده نمیکنید براحتی تعداد چک های خورده رو بهتون میده اما اگه حتما میخواید از چک های جدا استفاده کنید بگید تا کدشو بزارم...

IMANAZADI
پنج شنبه 01 دی 1390, 14:37 عصر
ببین دوست عزیز شکل کلی به این صورت هست
http://up1.iranblog.com/images/e5zsgi9457dk5h8g929v.jpg (http://up1.iranblog.com/)
من اینکار رو با دستورات تو در توی IF نوشتم ولی میخوام ببینم میشه تابعی براش نوشت که پارامتر تابع آرایه ای از چک باکس باشه
و تعداد تیک خورده ها در تکس باکس نمایش داده بشه

az.heidarzadeh
پنج شنبه 01 دی 1390, 15:46 عصر
خب دوست عزیز من هرچی فکر کردم نفهمیدم کد مد نظرت چطوری میشه اگه چک باکس های تو روی فرمت باشه چطوری میخوای مثل آرایه برای تابع بفرستی بهرحال من به نتیجه ای نرسیدم این کدی که نوشتم نیاز به if تو در تو نداره جمع چکهایی رو میده که روی فرم هست اگه تو چک هاتو توی panel یا group میزاری دیگه جاشو مشخص کن، کد رو توی change یکی از چک ها بنویس و برای بقیه همینو صدا بزن میتونی هم ببریش توی تابع اما فرقی نمیکنه...


int i = 0;
foreach (Control co in this.Controls)
if (co is CheckBox)
{
CheckBox chk = (CheckBox)co;
if (chk.Checked)
i++;
}
textBox1.Text = i.ToString();