نمایش نتایج 1 تا 16 از 16

نام تاپیک: دسترسی به کنترل های فرم با حلقه for

  1. #1

    دسترسی به کنترل های فرم با حلقه for

    سلام دوستان
    من یه فرم دارم که توش حدود 30 تا , checkbox وجود داره حالا می خوام با یه حلقه for به اینا دسترسی داشته باشم تا بتونم مقدار شو تغییر بدم میشه بگید چجوری میشه این کار رو انجام داد
    من با خاصیت controls از form این کار رو می خواستم انجام بدم ولی پیغام خطا داد که مشخص می شد هیچی تو این خاصیت وجود نداره کد تقریبا بصورت زیر بود
    form1.controls[i].text="xxxxx"

  2. #2
    کاربر دائمی آواتار flash118
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    بسته های شبکه
    پست
    466

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    دوست عزيز اولا بايد نوع كنترلتون رو مشخص كنيد دوم هم اين روش شما محدود هست براي بهينه تر كردن و زيبا سازي درخواست شما ميتونيد از حلقه foreach استفاده كنيد البته اگه سايت رو بگرديد نمونه هايي رو پيدا ميكنيد اگه بازم مشكلتون حل نشد براتون با سورس كد توضيح مي دم فقط ببخشيد چون وقت نكردم سورس بزارم
    اگه باز مشكل داشتين بفرماييد با سورس توضيح ميدم

  3. #3
    کاربر دائمی آواتار shask00l
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    روی پاهای خودم
    سن
    38
    پست
    387

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    این مثال برای تغییر متن تمامی textbox های روی فرم نوشته شده . برای بقیه کنترل ها یا کارهای پیچیده تر از خلاقیت خودت استفاده کن . ضمنا موضوع تکراریه و با سرچ میتونستی جواب های خیلی بهتری پیدا کنی . من این کارو با سرچ کردن توی همین سایت یاد گرفتم رفیق .

    foreach (Control X in this.Controls) if (X is TextBox) { (TextBox)X.Text = "xx"; }

  4. #4

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    بیا

    for (int i = 0; i < this.Controls.Count; i++)
    {
    if (this.Controls[i] isCheckBox)
    {
    this.Controls[i].Text = "xxxx";
    }
    }

  5. #5

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    با سلام.

    کد زیر برای شناسایی کنترل تکست باکسی هست که تو در تو نیست.


    foreach (Control c in Controls)
    {
    if (c.GetType() == typeof(TextBox))
    {
    c.Text = "";
    }
    }


    کد زیر برای شناسایی کنترل تکست باکس تو در تو



    // حلقه ای برای شناسایی کنترل ها
    foreach (Control c in Controls)
    {
    // حلقه ای برای شناسنایی کنترل های تو در تو
    // که مناسب هستش برای کنترل هایی که درون کونتاینرها قرار دارن
    foreach (Control d in c.Controls)
    {
    // شناسایی ایا اینکه کنترل مربوطه از نوع تکست باکس است
    if (d.GetType() == typeof(TextBox))
    {
    // پاک کردن خاصیت تکست ان
    d.Text = "";
    }
    } // end Foreach 2

    } // end Foreach 1

    کسی که به خود اطمینان دارد به تعریف دیگران احتیاج ندارد. «گوستاو لوبون»


  6. #6
    کاربر دائمی آواتار zayens
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شرکت امیدبوم
    پست
    591

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    جناب morteza_bn گمون کنم سرت کلاه رفت!
    هیچ کدوم از کدهای بالا جواب سوال شما نیست.
    در واقع با روش های بالا نخواهید توانست خاصیت CheckState چک باکس خود را تغییر دهید.
    دوستان لطف کنن اگه میتونن کدی که CheckBox را checked یا Unchecked میکنه قرار بدن نه صرفا تغییر text لیبل ها رو.

  7. #7

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    این کد رو هم امتحان کنید :


    foreach (Control ct in this.Controls)
    {
    if (ct.GetType() == typeof(CheckBox))
    {
    if ((ct as CheckBox).Checked)
    {
    MessageBox.Show((ct as CheckBox).Name);
    }
    }
    }






  8. #8

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    نقل قول نوشته شده توسط zayens مشاهده تاپیک
    جناب morteza_bn گمون کنم سرت کلاه رفت!
    هیچ کدوم از کدهای بالا جواب سوال شما نیست.
    در واقع با روش های بالا نخواهید توانست خاصیت CheckState چک باکس خود را تغییر دهید.
    دوستان لطف کنن اگه میتونن کدی که CheckBox را checked یا Unchecked میکنه قرار بدن نه صرفا تغییر text لیبل ها رو.
    جگرت شم نوشته خودش کد :
    form1.controls[i].text="xxxxx"
    را نوشته و غلطه خوب یعنی می خواسته تکستش را تغییر بده در ضمن جایی نگفته تو سوال چک داشته باشه یا نه!!!

  9. #9

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    سلام
    راحت ترين راه اينه كه به كنترل مورد نظر اشاره كني تا فعال بشه بعد از اون استفاده كني
    • Controlname.focus();

  10. #10
    کاربر دائمی آواتار zayens
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شرکت امیدبوم
    پست
    591

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    نقل قول نوشته شده توسط Mohandes2009 مشاهده تاپیک
    جگرت شم نوشته خودش کد :
    form1.controls.text="xxxxx"
    را نوشته و غلطه خوب یعنی می خواسته تکستش را تغییر بده در ضمن جایی نگفته تو سوال چک داشته باشه یا نه!!!
    به سوالش دقت کنین
    نقل قول نوشته شده توسط morteza_bn مشاهده تاپیک
    سلام دوستان
    نقل قول نوشته شده توسط morteza_bn مشاهده تاپیک
    من یه فرم دارم که توش حدود 30 تا , checkbox وجود داره حالا می خوام با یه حلقه for به اینا دسترسی داشته باشم تا بتونم مقدار شو تغییر بدم میشه بگید چجوری میشه این کار رو انجام داد
    من با خاصیت controls از form این کار رو می خواستم انجام بدم ولی پیغام خطا داد که مشخص می شد هیچی تو این خاصیت وجود نداره کد تقریبا بصورت زیر بود
    form1.controls.text="xxxxx"
    [i][i]جمله ی " تقریبا بصورت زیر بود " یعنی : یه چیزایی تو این مایه ها بود

    درضمن: اگر صد تا چک باکس هم در یک فرم باشه در صورتی که همش در GroupBox باشه ویژوال،تعداد کنترل ها را برابر 1 میداند.(با دستور count امتحان کنید)

    این هم کد چک مارک کردن همه ی چک باکس ها
    نقل قول می گردد که کد، مال Salar Ashgi میباشد(صرفا جهت احترام به حقوق)
    البته کمی با تغییر

    foreach
    (Control c inthis.Controls)
    {
    if (c.GetType() == typeof(CheckBox))
    {
    if ((c asCheckBox).CheckState == CheckState.Unchecked)
    {
    (c
    asCheckBox).CheckState = CheckState.Checked;
    }
    }
    }
    آخرین ویرایش به وسیله zayens : دوشنبه 15 شهریور 1389 در 14:07 عصر

  11. #11

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    کاربر zayens ، یه نقل قولی هم میزدید بد نبود ، عینا کد رو کپی و پیست کردید و همینطوری نوشتید ،
    سعی کنید به حقوق دیگران احترام بگذارید ./






  12. #12

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    نقل قول نوشته شده توسط Salar Ashgi مشاهده تاپیک
    کاربر zayens ، یه نقل قولی هم میزدید بد نبود ، عینا کد رو کپی و پیست کردید و همینطوری نوشتید ،
    سعی کنید به حقوق دیگران احترام بگذارید ./
    دورت بگردم بیچاره نوشت که مال تو هست خونت را رنگی نکن

  13. #13
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    آستارا-تهران
    پست
    357

    نقل قول: دسترسی به کنترل های فرم با حلقه for

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

    privatevoid button1_Click(object sender, EventArgs e)
    {
    for (int i = 0; i < this.Controls.Count; i++)
    {
    this.setCheck(this.Controls[i], true);
    }
    }
    void setCheck(Control c,bool b)
    {
    if (c isCheckBox)
    {
    (c asCheckBox).Checked = b;
    }
    for (int i = 0; i < c.Controls.Count; i++)
    {
    this.setCheck(c.Controls[i], true);
    }
    }
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله mohsen_csharp : سه شنبه 16 شهریور 1389 در 01:48 صبح دلیل: اشتباه تایپی به جای توابع بازگشتی نوشته بودم توابع تودرتو

  14. #14

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    پس این توابع تودرتو واسه چی ساخته شده
    دوست عزیز ، ما اصلا در خانواده C از جمله : C#‎,C++‎,C ، اصلا مفهومی بنام توابع تودرتو نداریم ، چون قانونا
    تو این زبانها تابع رو نمیشه داخل تابع تعریف کرد !
    در ضمن ، الگوریتم شما هم سربار زیادی روی سیستم داره و اینکار حتما باید با حلقه انجام بشه و شما
    این حلقه ها رو فقط داخل یک تابع بکار بردید ، همین و بس ، و اینکار هیچ کمکی به بهینه کردن مساله
    نمیکند ! البته اینا توصیه دوستانه بود ، امیدوارم پذیرا باشید ./
    با امید موفقیت ./






  15. #15
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    آستارا-تهران
    پست
    357

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    از دوستان عذرخواهی می کنم
    به جای توابع بازگشتی نوشته بودم توابع تودوتو
    منظور من بازگشتی بود که اشتباه شد
    مثالی هم که زدم توابع بازگشتی هست

  16. #16
    کاربر دائمی آواتار میلاد قاضی پور
    تاریخ عضویت
    بهمن 1388
    محل زندگی
    اوج بلند
    پست
    768

    نقل قول: دسترسی به کنترل های فرم با حلقه for

    اما با استفاده از توابع بازگشتی که کد باید اینجوری میشد !!!



    void setCheck(int i)
    {
    if (i==(this.controls.count))
    return;
    if (this.controls[i] is CheckBox)
    this.controls[i] as CheckBox.Checked = true;
    i++;
    setCheck(i);
    }


    private void button1_Click( object sender, EventArgs e)
    {
    this .setCheck(0);
    }


    البته آقا محسن استاد من بودن جسارت کردم و معذرت میخوام به خاطر این مسأله .فقط به خاطر اینکه ایرادات خودم برطرف بشه این کد رو گذاشتم.
    آخرین ویرایش به وسیله میلاد قاضی پور : سه شنبه 16 شهریور 1389 در 02:35 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •