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

نام تاپیک: چگونه می شود در C#‎ آرایه ای از کنترلی مثل textbox ساخت

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    تهران
    پست
    30

    چگونه می شود در C#‎ آرایه ای از کنترلی مثل textbox ساخت

    با سلام خدمت همه دوستان
    چگونه می شود در C#‎ آرایه ای از کنترلی مثل textbox ساخت

  2. #2
    کاربر دائمی آواتار Sorenaa_s
    تاریخ عضویت
    اردیبهشت 1386
    سن
    43
    پست
    115
    اگر با .Net 1.1 کار کی کنی از ArrayList استفاده کنید و اگر با .Net 2، از Generic ها.

  3. #3
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    کد زیر از بین تمام کنترل های موجود روی فرم فقط textbox ها رو توی یک آرایه می ریزه و بعد نشون می ده

    ArrayList TxtAL = new ArrayList();

    for (int i = 0; i < this.Controls.Count; i++)
    {
    if (this.Controls[i].GetType().ToString() == "System.Windows.Forms.TextBox")
    TxtAL.Add(this.Controls[i]);
    }

    for (int i = 0; i < TxtAL.Count; i++)
    MessageBox.Show(TxtAL[i].ToString());

  4. #4
    اگه درست متوجه منظورت شده باشم می خوای یک آرایه داشته باشی از یک نوع کنترل خاص
    با کد زیر میتونی یه آرایه از کنترل ها در زمان کد نویسی ایجاد کنی

    اول باید آرایه رو تعریف کنی
    ;[private controlname[] name=nwe controlname[arraylenght

    موقعی که میخوای از یکی از کنترلها استفاده کنی
    1- ;()name[index]=new controlname
    حالا اونو به کنترلهای فرمت یا یه کنترل دیگه اضافه میکنی
    2- ;([parentcontrol.Controls.Add(name[index
    حالا میتونی از این کنترل مثل بقیه کنترلها استفاده کنی و به خاصیت ها توابع و ... این کنترل دسترسی داشته باش
    name[index].backcolor=color.red

    مثلا برای ایجاد یک ارایه 10 عضوی از TextBox:
    ;[private TextBox[] name=nwe TextBox[10
    ;()name[0]=new TextBox
    2- ;([this.Controls.Add(name[0
    ;"name[0].Text="test

  5. #5
    ]System.Windows.Forms.TextBox[] txtArray=new System.Windows.Forms.TextBox[5

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    تهران
    پست
    30
    از همه بچه ها ممنونم

  7. #7
    کاربر تازه وارد آواتار jome ramezani
    تاریخ عضویت
    تیر 1385
    محل زندگی
    افغانستان
    پست
    55
    سلام
    امید وارم این مثال برایتون مفید باشد
    در ضمن این مثال را از مثالهای موجود در دلفی 2005 میباشد
    فایل های ضمیمه فایل های ضمیمه

  8. #8
    سلام به دوستان.

    من این کار رو در زمان دیزاین انجام دادم. برای مثال برای درست کردن ده تا لیبل بصورت Array در form1 رفتم توی Form1.Desinger.cs و مثلا کد زیر رو در اونجا اضافه کردم:

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

    private System.Windows.Forms.Label[] lblItem;


    و بعد در تابع InitializeComponent() در جای خودش اینا رو اضافه کردم :

    this.lblItem =new System.Windows.Forms.Label[10];

    this.lblItem[0] = new System.Windows.Forms.Label();
    . . .
    this.lblItem[10] =new System.Windows.Forms.Label();


    بعد خصوصیات هر کنترل توی همون تابع تنظیم شده :
    // 
    // lblItem[0]
    //
    this.lblItem[0].Location = new System.Drawing.Point(7, 6);
    this.lblItem[0].Name = "lblItem";
    this.lblItem[0].Size = new System.Drawing.Size(38, 20);
    this.lblItem[0].TabIndex = 0;
    this.lblItem[0].Text = "0000";
    this.lblItem[0].TextAlign = System.Drawing.ContentAlignment.MiddleCenter;


    و بعد هم در آخر در قسمت تنظیم خصوصیات فرم که بقیه کنترلها به فرم Add میشوند، این کنترلها را Add کردم:

    this.Controls.Add(this.lblItem[0]);
    . . .
    this.Controls.Add(this.lblItem[10]);


    همه چیز درست کار میکنه و در دیزاین فرم هم نمایش داده میشه.
    اما دو تا مشکل اساسی وجود داره :
    اول اینکه در دیزاین تو ادیتور نمیشه کنترلها رو ویرایش کرد.
    دوم اینکه نمیشه برای کنترلهای ایندکسی شده ایونت در نظر گرفت.(مثلا Click)
    ایونت ها رو دقیقا مثل خود کدهای سی شارپ اضافه کردم ولی خطا میگیره. !

    حالا سوال اینه که چطور به این کنترلها ایونت نسبت داد و باهاشون کار کرد و خطا نگیره؟

  9. #9
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    سلام
    نمی‌تونی برای یک آرایه یکباره event بدی باید تک تک اینکار رو بکنی
    به مثال زیر توجه کن

    روش غلط

    lblItem.Click += new EventHandler(lbl1_Click);

    روش صحیح

    lblItem[0].Click += new EventHandler(lbl1_Click);

  10. #10
    کاربر دائمی آواتار سار
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    تورین-ایتالیا
    پست
    1,044
    پیشنهاد میکنم Index آرایه را در Tag هر Button ذخیره کنید و بعد به یک Event ارسال کنید همه را در Event برسی کنید که Tag چه مقداری دارد و آنگاه خواهید توانست عکس العمل مناسب را انجام دهید.

  11. #11
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    نیازی به Index نیست. می توانید از tag استفاده کنید

  12. #12
    خوشبختانه ایونت ها در زمان اجرا به خوبی و بدون خطا کار می کنند. ولی در صفحه دیزاین با پیغامهای Warnings بصورت زیر مواجه می شوم:
    Events cannot be set on the object passed to the event binding service because a site associated with the object could not be located.


    و به این صورت امکان صفحه دیزاین رو از دست می دهیم.

    در مورد Tag ، من از TabIndex کنترلها استفاده می کنم که با ایندکسهای کنترلهای من یکی هستند.

    البته استفاده از کنترلهای آرایه مزایای خوبی دارد. یکی از این مزایا امکان دسترسی مستقیم با استفاده از ایندکس متغییر در جاهای دیگر هست. مثلا فکر کنید شما 40 کنترل هم جنس دارید و کاربر یک شماره بین 0 تا 39 را در قالب یک آرگومان به یک تابعی غیر از ایونت ها ارسال میکنه و تابع باید بر اساس این شماره برود کنترل مورد نظر رو پیدا کنه و مثلا رنگش رو قرمز کنه. در اینجا اگر از Tag و ... برای این کار استفاده کنیم هیچ راهی نداریم جز اینکه توی یک حلقه ، Tag رو پیدا کنیم و یا از یک Switch case به تعداد 40 آیتم استفاده کنیم.
    اما اگه این 40 کنترل آرایه باشد، با قرار دادن همون عدد در [ ] مربوط به کنترل، میشود مستقیم به کنترل دسترسی داشته باشیم.

    توی دات نت 3 این مشکل در نظر گرفته شده و امکان ایجاد کنترلهای آرایه بصورت خاصی شده. مثلا برای ایجاد Button از ButtonArray استفاده میشود.

  13. #13
    نقل قول نوشته شده توسط توسعه نویس مشاهده تاپیک
    ...البته استفاده از کنترلهای آرایه مزایای خوبی دارد....
    در oop با استفاده از منطق Indexer نیاز به آرایه اندیس دار پوشش داده شده است.
    ...مرا به خانه ام ببر، اگرچه خانه؛ خانه نیست

  14. #14
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط توسعه نویس مشاهده تاپیک
    توی دات نت 3 این مشکل در نظر گرفته شده و امکان ایجاد کنترلهای آرایه بصورت خاصی شده. مثلا برای ایجاد Button از ButtonArray استفاده میشود.
    منبع؟ (؟؟؟XAML)

    یک سوال:
    اگر یک کنترل در ران تایم اضافه بشد، با این روش ایندکسش و یا تگش چیه؟
    اگر برنامه نویسی با این پروزه کار کند، باید بداند که بعد از اضافه کردن کنترل باید این کنترل را به آریه هم اضافه کند.

  15. #15
    منبع؟ (؟؟؟XAML)
    توی MSDN

    اگر یک کنترل در ران تایم اضافه بشد، با این روش ایندکسش و یا تگش چیه؟
    اگر برنامه نویسی با این پروزه کار کند، باید بداند که بعد از اضافه کردن کنترل باید این کنترل را به آریه هم اضافه کند.
    زیاد متوجه نشدم. ولی به هر حال تکنیک های متنوعی برای کد نویسی وجود داره. کنترلی که در RunTime اضافه میشه و تکی هست باید ترجیحا Array نباشه. ولی اگه قراره چند تا باشه می تونه بصورت یک Array جدید ایجاد بشه. اگر هم نیاز باشه در RunTime به آرایه موجود اضافه بشه راه حل وجود داره ولی دردسرهایی هم داره. یک راه مناسب برای این کار استفاده از نوع ArrayList هست که داینامیکه و بیشتر برای این جور وقتا استفاده میشه.

    در oop با استفاده از منطق Indexer نیاز به آرایه اندیس دار پوشش داده شده است.
    اگه میشه بیشتر در مورد راهنمایی کنید. اگه مثالی هم هست بگید.

  16. #16
    نقل قول نوشته شده توسط توسعه نویس مشاهده تاپیک
    توی MSDN
    زیاد متوجه نشدم. ولی به هر حال تکنیک های متنوعی برای کد نویسی وجود داره. کنترلی که در RunTime اضافه میشه و تکی هست باید ترجیحا Array نباشه. ولی اگه قراره چند تا باشه می تونه بصورت یک Array جدید ایجاد بشه. اگر هم نیاز باشه در RunTime به آرایه موجود اضافه بشه راه حل وجود داره ولی دردسرهایی هم داره. یک راه مناسب برای این کار استفاده از نوع ArrayList هست که داینامیکه و بیشتر برای این جور وقتا استفاده میشه.
    اگه میشه بیشتر در مورد راهنمایی کنید. اگه مثالی هم هست بگید.
    البته نه دقیقا
    ArrayList آیتمهایی از نوع آبجکت میگیره و زمانی استفاده میشه که نتونیم Type رو شناسایی کنیم ؟(پس میتونیم هرچیزی توش بریزیم) وقتی نوع رو میدونید بهتره حتما از کالکشنهای ژنریک استفاده کنید (بدلیل Performane بهتر) مثل :
    List<Button>
    ...مرا به خانه ام ببر، اگرچه خانه؛ خانه نیست

تاپیک های مشابه

  1. تعداد کاراکترهای TextBox
    نوشته شده توسط مجتبی جوادی در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: یک شنبه 09 اردیبهشت 1386, 12:46 عصر
  2. رابطه بین textbox و فرامین SQL
    نوشته شده توسط masoudcarpet در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: جمعه 07 اردیبهشت 1386, 18:01 عصر
  3. چگونه محتویات یک textbox html را در textbox asp.net قرار داد
    نوشته شده توسط j-mehdi در بخش طراحی وب (Web Design)
    پاسخ: 13
    آخرین پست: دوشنبه 30 خرداد 1384, 21:44 عصر

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

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