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

نام تاپیک: چگونگی حرکت بین کنترل های فرم

  1. #1

    Post چگونگی حرکت بین کنترل های فرم

    سلام به همگی
    من احتیاج به یک حلقه دارم که بتونم بین تمام کنترل های موجود بر روی فرم حرکت کنم... مثلا اگر 2تا کنترل textbox روی فرم بود بتونم اونا رو بخونم و به خاصیت هاشون دسترسی داشته باشم...

    ممنون میشم اگر راهنمایی کنید...

  2. #2
    کاربر دائمی آواتار sobaisobai
    تاریخ عضویت
    آذر 1388
    محل زندگی
    Tehran
    پست
    490

    نقل قول: چگونگی حرکت بین کنترل های فرم

    سلام دوست عزیز
    با Foreach میتونی
     foreach (Control c in this.Controls)
    {
    if (c is TextBox)
    {
    TextBox f = (TextBox)c;
    MessageBox.Show(f.Text);

    }
    }

    موفق باشی

  3. #3

    نقل قول: چگونگی حرکت بین کنترل های فرم

    جسارت نباشه ولي كدتون باگ داره بعنوان مثال وقتي ابزاري داخل group قرار بگيره با اين كد بهش دسترسي نداريم. من اين كد رو پيشنهاد ميدم:


    public static void LoadSkin(Control root )
    {
    foreach (Control ctl in root.Controls)
    {
    LoadSkin(ctl);

    if (ctl is TextBox )
    {
    TextBox tmp;
    tmp = (TextBox)ctl;
    tmp.Font = new System.Drawing.Font("B Roya", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(178)));
    tmp.RightToLeft = System.Windows.Forms.RightToLeft.No;
    tmp.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
    }
    }
    }


    با اين كلاس و تابع اگر كنترلي خودش باز حاوي كنترل ديگري بود واردش ميشه و اشيا روي اونو ميخونه.

  4. #4
    کاربر دائمی آواتار sobaisobai
    تاریخ عضویت
    آذر 1388
    محل زندگی
    Tehran
    پست
    490

    نقل قول: چگونگی حرکت بین کنترل های فرم

    سلام ali_habibi1384
    خواهش میکنم ممنون از نظرت
    ولی اگه کنترل ها داخل مثلا GroupBox یا هر چیز دیگه ای هم باشه هم میتونی از دستور زیر استفاده کنی
     foreach (Control c in this.groupBox1.Controls)
    {
    if (c is TextBox)
    {
    TextBox f = (TextBox)c;
    MessageBox.Show(f.Text);
    }
    }



  5. #5

    نقل قول: چگونگی حرکت بین کنترل های فرم

    چيزي كه ميگي درست اما اين مستلزم اينه كه شما اسم گروپ باكس ها رو بدوني و يكي اينجوري كلي كد بايد براش بزني شما در نظر بگير كه يه برنامه نوشتي با 100 تا فرم توي هر فرمش هم ممكنه چندتا گروپ باكس باشه واسه هر كدوم بخواي تغيير بدي كه نميشه. ولي با كلاسي كه من نوشتم شما فقط كافيه يكبار بنويسي سپس يك فرم رو بهش پاس بدي تا كليه كنترلهاي موجود روي اونو تغيير بدي.سعي كن كدي كه مينويسي كم حجم بهينه و كلي باشه و مطابق ما روشهاي برنامه نويسي نه اينكه فقط يكجوري كد بنويسي كه جواب بده.
    موفق باشي

  6. #6
    کاربر دائمی آواتار sobaisobai
    تاریخ عضویت
    آذر 1388
    محل زندگی
    Tehran
    پست
    490

    نقل قول: چگونگی حرکت بین کنترل های فرم

    درسته
    اما واسه وقتیه که تعداد فرمها یا پنل ها یا .... زیاد باشه

  7. #7
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: چگونگی حرکت بین کنترل های فرم

    نقل قول نوشته شده توسط ali_habibi1384 مشاهده تاپیک


    public static void LoadSkin(Control root )
    {
    foreach (Control ctl in root.Controls)
    {
    LoadSkin(ctl);

    if (ctl is TextBox )
    {
    }
    }
    }

    کدتون رو تست نکردم ولی به نظرم باگ داره
    شما بعد از foreach دوباره تابع را صدا می زنید که این کار برای هر شی ای که حالت Collection (مثل panel) داشته باشه درست عمل می کنه
    اما فرض کنید شی تکست باکس باشه من هر چی فکر می کنم انگار سراغ if نمی ره

  8. #8

    نقل قول: چگونگی حرکت بین کنترل های فرم

    پيشنهاد ميكنم اول تست كنيد پس!

  9. #9
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: چگونگی حرکت بین کنترل های فرم

    تست کردم حق با شماست
    اگر درست متوجه شده باشم زمانی که شی collection نباشه سراغ If می ره
    درسته ؟

  10. #10

    نقل قول: چگونگی حرکت بین کنترل های فرم

    درسته.اگر داخل شي شي ديگه اي وجد نداشته باشه بقيه الگوريتم اجرا ميشه اين برنامه از توابع تو در تو استفاده شده.

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

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