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

نام تاپیک: لیست تمام آبجکت های درون فرم

  1. #1

    لیست تمام آبجکت های درون فرم

    با سلام و خسته نباشید.
    .
    راستش من توی زبان دلفی دیدم ک ی آرایه وجود داره که لیست تمام کنترل هایی که شما درون برنامه داری رو نشون میده، به عنوان مثال میگم اولین عنصر آرایه یک دکمس، عنصر دومش یک لیبل عنصر سوم یک تکست باکس و ....
    .
    و جالب اینجا بود که با شماره اندیس و استفاده از نام اون آرایه میشد به خاصیت های کنترل ها دسترسی داشته باشی.، حالا سوال اینجاس تو سی شارپم داره همچین چیزی یا نه..!؟
    .
    من مثلا میگم، 20 تا لیبل دارم، نمیخوام بیست تا if استفاده کنم، یه آرایه باشه که با اندیسش بتونم با یک حلقه فور به تک تکشون دسترسی داشته باشم، آیا میشه یا نه..!؟
    .
    با تشکر.

  2. #2

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

    اینجا هم هست Controls مثل زیر هم میشه پیمایشش کرد و مثلا در شرط من یک تکس باکس را پیدا کردم . اسم ش هم میتونید پیدا کنید .


    foreach (var item in this.Controls)
    {
    if (item.GetType() == typeof(CheckBox))
    {


    }
    }

  3. #3
    منظورتون چک باکسه دیگه.!؟
    .
    اما خب الان من اینو تست کردم ولی خب جواب نمیده این چیزی ک من میخوام، به عنوان مثال میگم من میخوام حالا که چک باکسه پیدا شد، نامرئیش کنم، یا نمیدونم enablesho فالس کنم، الان با متغیر item من به خاصیتاش دسترسی ندارم که..!؟!
    مثلا بگم item.enable=false این جواب نمیده ک..!

    تو دلفی مثلا میگم یک فرم بود ک 50 تا تکست باکس داشت، بعد یک کد طرف زده بود که آقا هرجا ک فوکوس شد، اگ کنترل تکست باکس بود، بگراندش زرد بشه..! کاری ک من میکنم اینه که مثلا توی خاصیت اینتر میگم زرد بشه، تو خاصیت خروجش میگم سفید بشه، یعنی واسه پنجاه تا تکست باکس 100 تا تابع باید فراخوانی کنی.
    .
    اما دلفی خیلی ساده کرده بود

    البته کاری که الان میخوام بکنم اینه که...
    .
    من 20 تا لیبل دارم (لیبل هایی که قراره به ترتیب روشن بشه..!) البته لیبل های ثابت دیگه ام دارم توی برنامه..! حالا میخوام بدونم میشه کاری کرد که مثلا با یک تایمر کاری کرد که بگم از عنصر مثلا 20 تا عنصر 40 ام با هر تیک تایمر روشن بشه..!
    .
    البته به شرطی که بشه لیست 20 تا لیبلمو در بیارم ک عنصر چندم توی آرایه اند.
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 21 فروردین 1393 در 18:32 عصر

  4. #4
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

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

    با سلام

    ببین این کمکت می کنه:


    foreach (Control item in this.Controls)
    {
    if (item is Label)
    {
    item.Text = "متن مورد نظر";
    }
    }



    البته اینو به رویداد کلیک یک Button اختصاص دادم و دو تا Label به فرم اضافه کردم.
    متن هر دو لیبل را عوض کرد.

    با تشکر

  5. #5

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

    آره دیدم چی شد، پس چرا تو کد قبلی نمیشد به خاصیت ها دسترسی داشت..!؟ جالبه..!
    .
    اما مرسی، همین Controls خیلی جالبه دنبال همین بودم، الان دارم باهاش کار میکنم، با اندیسم میشه باهاش کار کارد مثلا گفت
    this.Controls[15].Visible = false;
    اما خب حالا از کجا بفهمم کدوم کنترلم کدوم عنصره.!؟ برنامه رو وسط کار پاز کردمو توی لوکالش نشستم به شماردن ولی ترتیبی که اونجا نشون میده با ترتیب توی Controls یکی نیست :-(

  6. #6

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

    میشه یه نمونه برنامه بزارین
    با سپاس

  7. #7

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

    برنامه خاصی نداره..! مثال میگم فک کنید من 20 تا لیبل دارم و میخوام با یک تایمر به ترتیب با هر تیک روشن بشه..!
    اینجوری مثلا..!
    int M = 1;


    private void timer2_Tick(object sender, EventArgs e)
    {
    this.Controls[M++].Visible = true;
    }

    .
    حالا سوال اینجاس من چطور اندیس لیبل هامو پیدا کنم! مثال میگم بجای لیبلی که مد نظرمه یکی دیگه غیب نشه..!!!! یا چجوری لیبلایی ک مد نظرمه توی Controls به ترتیب بذارم، یعنی چطوری بچینم تو فرم ک به ترتیب بیاد.
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 21 فروردین 1393 در 18:48 عصر

  8. #8

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

    من ی توضیح دیگه بدم شاید بهتر باشه..
    .
    من یه فرم دارم، داخلش یک تعداد از لیبل های خاصی ک وجود داره، همشون نه..! مثلا میگم 40 تا لیبله! من 20 تاشو ک مد نظرمه میخوام به ترتیب روشن بشه..!
    .
    فک کنید 20 تا لیبل گذاشتم از عدد یک تا بیست..! حالا می خوام با هر تیک تایمر یکی یکی روشن بشه..! یکیش اینکه من یگم مثلا اگ تیک اول بود لیبل اول، اگر تیک دوم بود لیبل دوم..! به عبارتی 20 تا if بذارم تا مشکلم حل شه..!
    حالا من میگم اینکارو نکنم..! یه مغیر سراسری داشته باشم..! مثل M که با هربار تیک زدن تایمر کنترل m موم ویزیبلش ترو بشه..!
    .
    حالا مشکلی که دارم اینکه چکار کنم ک ترتیبی که من میخوام همون ترتیب توی Controls باشه و از کجا بفهمم اندیسشون چنده اصلا..!
    .
    ببخشید یکمی طولانی شد :-)
    با تشکر

  9. #9

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

    نقل قول نوشته شده توسط sajaaaaad مشاهده تاپیک
    من ی توضیح دیگه بدم شاید بهتر باشه..
    .
    من یه فرم دارم، داخلش یک تعداد از لیبل های خاصی ک وجود داره، همشون نه..! مثلا میگم 40 تا لیبله! من 20 تاشو ک مد نظرمه میخوام به ترتیب روشن بشه..!
    .
    فک کنید 20 تا لیبل گذاشتم از عدد یک تا بیست..! حالا می خوام با هر تیک تایمر یکی یکی روشن بشه..! یکیش اینکه من یگم مثلا اگ تیک اول بود لیبل اول، اگر تیک دوم بود لیبل دوم..! به عبارتی 20 تا if بذارم تا مشکلم حل شه..!
    حالا من میگم اینکارو نکنم..! یه مغیر سراسری داشته باشم..! مثل M که با هربار تیک زدن تایمر کنترل m موم ویزیبلش ترو بشه..!
    .
    حالا مشکلی که دارم اینکه چکار کنم ک ترتیبی که من میخوام همون ترتیب توی Controls باشه و از کجا بفهمم اندیسشون چنده اصلا..!
    .
    ببخشید یکمی طولانی شد :-)
    با تشکر
    یه روش ابتکاری میگم . توی خاصیت تگ tag هر لیبل یه عدد بذار مثلا از 0 شروع کن . بعد به شکل زیر میشه پیمایشش کنی :
    فقط اون i را باید مدیریت کنی مثلا بسته به این سناریو که گفتی میشه تو هر تیک زیاد بشه به صورت عمومی تعریف ش کن .

    foreach (Control item in this.Controls)
    {
    if (item is Label)
    {
    if (item.Tag == i.ToString())
    {
    item.Text = "OK";
    }
    }
    }

  10. #10
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

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

    با سلام مجدد

    می تونی از خاصیت TabIndex کمک بگیرید.

    حالا به ترتیبی که می خواهید مقدار TabIndex هر کنترل را تغییر بدید.


    private void timer2_Tick(object sender, EventArgs e)
    {
    Counter++;

    foreach (Control item in this.Controls)
    {
    if (item is Label && item.TabIndex == Counter)
    {
    item.Text = "gdsf";
    }
    }
    }


    با تشکر
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 21 فروردین 1393 در 18:50 عصر

  11. #11

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

    با تشکر از دوستان عزیز... راهنمایی های ک کردین عالی بود.
    .
    اما یه چیزی نمیشه کاری کرد که این کنترل ها به ترتیب باشن توی آرایه و با اندیسش به همه دسترسی داشت..! یعنی یه کاری کرد که مثلا 20 تا لیبل من توی آرایه از اندیس مثلا 10 شروع شه تا 29 باشه..!؟ اصلا میشه مانور داد و اندیسارو خودت مرتب کنی که احتیاجی به گشتن کل آرایه نباشه..!؟

  12. #12

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

    نقل قول نوشته شده توسط sajaaaaad مشاهده تاپیک
    با سلام و خسته نباشید.
    .
    راستش من توی زبان دلفی دیدم ک ی آرایه وجود داره که لیست تمام کنترل هایی که شما درون برنامه داری رو نشون میده، به عنوان مثال میگم اولین عنصر آرایه یک دکمس، عنصر دومش یک لیبل عنصر سوم یک تکست باکس و ....
    .
    و جالب اینجا بود که با شماره اندیس و استفاده از نام اون آرایه میشد به خاصیت های کنترل ها دسترسی داشته باشی.، حالا سوال اینجاس تو سی شارپم داره همچین چیزی یا نه..!؟
    .
    من مثلا میگم، 20 تا لیبل دارم، نمیخوام بیست تا if استفاده کنم، یه آرایه باشه که با اندیسش بتونم با یک حلقه فور به تک تکشون دسترسی داشته باشم، آیا میشه یا نه..!؟
    .
    با تشکر.

    بله میشه راه درستش اینه که دوستمون بالا گفت:



    foreach (Control item in this.Controls) {
    if (item is Label && item.TabIndex == Counter)
    {
    item.Text = "gdsf";
    }
    }








    یه کاری کرد که مثلا 20 تا لیبل من توی آرایه از اندیس مثلا 10 شروع شه تا 29 باشه..!؟ اصلا میشه مانور داد و اندیسارو خودت مرتب کنی که احتیاجی به گشتن کل آرایه نباشه..!؟
    دوست عزیز این چیزی که شما می گین اصلاٌ جایی کاربرد نداره و لازم نیست. برای چی شما توی برنامه ات لازم داری که به جای 1 تا 20 از 20 تا 40 شروع بشه؟ (حالا هر اندیسی مهم نیست)؟

    دلیلش را می تونی بگی؟ چرا به این امکان شما نیاز داری؟
    حلقه Foreach در سی شارپ جامع و عالی است و مانور دادن روی کنترل ها از همه زبان ها بهتر نباشه کمتر نیست. به نظر من خیلی عالی کار شده. (من که اینطوری فکر میکنم)

    حالا شما مشکلت چیه؟

  13. #13

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

    من اصلا مشکلی با اندیسش ندارم!!! چرا دعوا میکنی
    .
    میگم ی جوری باشه ک من دسترسی داشته باشم با اندیس..! لازم نباشه کلشو بگردم..! همین..! ی جوری باشه که ب ترتیب باشه..! فک کنید من بخوام اینجوری فراخوانی کنم..! البته به شرطی ک همه با همون ترتیبی ک من میخوام باشن! البته مهم نیست! من گفتم ک به جواب رسیدم! اینا صرفا جهت یادگیریه..!
    .
    بعدشم الان مثال میگم فک کن توی ی فرم 40 تا تکست باکس داریم! من میخوام مکان نما اومد داخلش زرد بشه..! خارج شد سفید بشه..! من دیدم تو دلفی با چار خط کد حله این جریان..! حالا سی شارپ باید چکار کرد..! بهینش چیه..!؟ نمیخوام 80 تا ایونت فراخونی کنم. باید بشه ی کارایی کرد..! این سوالاتم جهت رسیدن ب اینه..! وگر نه من مشکلم حل شد داداش.

  14. #14

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


    int M = 1;
    private void timer2_Tick(object sender, EventArgs e)
    {
    this.Controls[M++].Visible = true;
    if(M>20)
    timer.enable=false;
    }
    این واسه قبلیه ک گفتم..! فک کنید من میخوام اینجوری بنویسم..! میشه اصلا..!؟ میشه کاری کرد ک کنترل ها به همون ترتیبی ک من میخوام اندیس داشته باشن یا نه..! حالا m هرچی میخواد باشه..! مهم نیست! مهم اینه ب ترتیب دلخواه من باشه..! عددش مهم نیست هرچی بود.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

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

    با سلام

    امکان این کار وجود دارد.

    ولی

    روشی که من بلدم نمی توان کنترل ها را در حالت دیزاین ویرایش کرد(یعنی نمی توان دید).

    در واقع بعد از کنترل های آرایه ای ایجاد و نمایش داده می شوند.

    ---------------------------------------------

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

    با تشکر

  16. #16

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

    میتونی ارجاعی از کنترلهای مورد نظر رو در یک لیست داشته باشی تا بتونی راحت تر باهاش کار کنی.

    List<CheckBox> lstChb;
    int counter;
    private void button1_Click(object sender, EventArgs e)
    {
    lstChb = new List<CheckBox>();
    foreach (Control c in this.Controls)
    {
    if (c is CheckBox)
    {
    CheckBox chb = c as CheckBox;
    lstChb.Add(chb);
    }
    }

    timer1.Interval = 1000;
    timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
    if (counter < lstChb.Count)
    {
    lstChb[counter].Checked = true;
    counter++;
    }
    else
    {
    timer1.Stop();
    }
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 12 اردیبهشت 1393 در 12:15 عصر

  17. #17

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

    نقل قول نوشته شده توسط sajaaaaad مشاهده تاپیک
    من اصلا مشکلی با اندیسش ندارم!!! چرا دعوا میکنی
    .
    میگم ی جوری باشه ک من دسترسی داشته باشم با اندیس..! لازم نباشه کلشو بگردم..! همین..! ی جوری باشه که ب ترتیب باشه..! فک کنید من بخوام اینجوری فراخوانی کنم..! البته به شرطی ک همه با همون ترتیبی ک من میخوام باشن! البته مهم نیست! من گفتم ک به جواب رسیدم! اینا صرفا جهت یادگیریه..!
    .
    بعدشم الان مثال میگم فک کن توی ی فرم 40 تا تکست باکس داریم! من میخوام مکان نما اومد داخلش زرد بشه..! خارج شد سفید بشه..! من دیدم تو دلفی با چار خط کد حله این جریان..! حالا سی شارپ باید چکار کرد..! بهینش چیه..!؟ نمیخوام 80 تا ایونت فراخونی کنم. باید بشه ی کارایی کرد..! این سوالاتم جهت رسیدن ب اینه..! وگر نه من مشکلم حل شد داداش.

    دوست عزیز من یه مقدار روشن و شفاف حرف می زنم ظاهراٌ ناراحت شدی. شرمنده

    خوب توی دلفی هر کاری میشه کرد اینجا هم میشه ، شاید راحت تر

    برای اینکه رنگ Background یک TextBox به اون حالتی که گفتی سفید و زرد بشه بهترین راه ساخت یک User Control هست.
    با 2 خط کد میشه این کار را انجام داد.

    بهتره Dll کنی بعد از ساخت
    پس یه ClassLibrary باز کن و به پروژه ات System.Windows.forms را AddReference کن و بعد کلاس جاری شما باید از TextBox ارث ببره و تا تمام ویژگی های TextBox مایکروسافت را داشته باشه +

    .... چیز های دیگه

    2 تا رنگ به نام GotColor و LostColor را به این Component اضافه کردم.

    زمان طراحی مشخص میکنیئ که وقتی کنترل فوکس میگیرد به چه رنگی درآید و وقتی کنترل از فوکوس خارج می شود به چه رنگی در آید!!!

    دانلود سورس کامپوننت

  18. #18

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

    خیلی ممنون... واقعا عالی بود. ببخشید من چند روزه اینترنت نداشتم، نشد تشکر کنم ازتون. ممنون لطف کزدین.
    .
    واسه اون سوال دیگه ک مطرح کردم راه کاری ندارین.!؟

    "فک کنید توی ی فرم 40 تا تکست باکس داریم! من میخوام مکان نما اومد داخلش زرد بشه..! خارج شد سفید بشه..! من دیدم تو دلفی با چار خط کد حله این جریان..! حالا سی شارپ باید چکار کرد..! بهینش چیه..!؟ نمیخوام 80 تا ایونت فراخونی کنم. باید بشه ی کارایی کرد..!"

  19. #19

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

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

    "فک کنید توی ی فرم 40 تا تکست باکس داریم! من میخوام مکان نما اومد داخلش زرد بشه..! خارج شد سفید بشه..! من دیدم تو دلفی با چار خط کد حله این جریان..! حالا سی شارپ باید چکار کرد..! بهینش چیه..!؟ نمیخوام 80 تا ایونت فراخونی کنم. باید بشه ی کارایی کرد..!"
    نیاز نیست 80 تا ایونت تعریف کنید با 2 تا ایونت هم انجام میشه .1 - Enter برای وقتی که کلیک میکنید ( که مثلا میگید رنگش را عوض کنه ) 2 - Leaveبرای وقتی که ازش خارج میشید

  20. #20

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

    نقل قول نوشته شده توسط sajaaaaad مشاهده تاپیک
    خیلی ممنون... واقعا عالی بود. ببخشید من چند روزه اینترنت نداشتم، نشد تشکر کنم ازتون. ممنون لطف کزدین.
    .
    واسه اون سوال دیگه ک مطرح کردم راه کاری ندارین.!؟

    "فک کنید توی ی فرم 40 تا تکست باکس داریم! من میخوام مکان نما اومد داخلش زرد بشه..! خارج شد سفید بشه..! من دیدم تو دلفی با چار خط کد حله این جریان..! حالا سی شارپ باید چکار کرد..! بهینش چیه..!؟ نمیخوام 80 تا ایونت فراخونی کنم. باید بشه ی کارایی کرد..!"

    بابا من که برات توضیح دادم ، مثال هم زدم ، گفتم یک Component بساز و با 2 خط مسکلت حل میشه

    موفق باشی

  21. #21

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

    با عرض سلام. داداش من امروز کارم گیره این جریانه.! من دقیق نفهمیدم باید چکار کنم. چطور Dll کنمش.! یک مورد اجرایی نمیشه واسم بفرستی.!؟ واسه این موردی که میگی.! الان این سورسی که گذاشتی خودش از TextBox ارث میبره، بعد من اینو باید Dll کنم و توی فرم های خودم TextBox هامو بگم ازین ارث ببرن.!؟ بعدشم من دقیق نمیدونم چطور DLL کنم. یک توضیحی بدین ممنون میشم.
    .
    2- من واسه درس شبیه سازی (سیمپلکس) میخوام فرمولو از کابر بیگیرم مثلا فرمول اینه.!
    2x1 + 4x2 + 3x3
    حالا چطوره میشه اینارم از هم تفکیک کنم که هم بتونم ضرایبو داشته باشم هم متغیرهارو.! مثلا داشته باشم 2 و ایکس یک...، 4 و ایکس 2....، تک تکشونو جدا میخوام.! هم ضریب هم متغیرش..! طول رشته ام مشخص نیست..!
    .
    با تشکر

  22. #22
    کاربر تازه وارد آواتار irartesh
    تاریخ عضویت
    تیر 1392
    محل زندگی
    صومعه سرا
    پست
    61

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

    این کد کمکت میکنه...فقط کافیه نام این دو ایونت رو در ایونت های موس لیو و موس اینتر (MouseEnter و MouseLeave) وارد کنید

    private void textBox2_MouseEnter(object sender, EventArgs e)
    {
    ((TextBox)sender).BackColor = Color.Red;
    }

    private void textBox2_MouseLeave(object sender, EventArgs e)
    {
    ((TextBox)sender).BackColor = Color.White;
    }

  23. #23

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

    داداش اینجوری ک میشه، سادس، من میخواستم اینکارو نکنم دیگه! البته مشکلم با Dev Commponent حل شد. واسه فرموله کسی نظری نداره..!؟ لطفا کمک کنید

  24. #24
    کاربر دائمی آواتار Pedram_Parsian
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    پشت کامپیوتر
    پست
    430

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

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

    ببین این کمکت می کنه:


    foreach (Control item in this.Controls)
    {
    if (item is Label)
    {
    item.Text = "متن مورد نظر";
    }
    }



    البته اینو به رویداد کلیک یک Button اختصاص دادم و دو تا Label به فرم اضافه کردم.
    متن هر دو لیبل را عوض کرد.

    با تشکر
    حالا من دارم از کامپوننت های devExpress استفاده می کنم. برای اون باید چی بنویسید در متن شرط؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

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

  1. سوال: گرفتن لیست تمام فایل های درون درایو یا پوشه
    نوشته شده توسط jamalbahmani در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: یک شنبه 10 آبان 1388, 06:51 صبح
  2. غیر فعال کردن تمام Button های درون یک فرم
    نوشته شده توسط سيد مجتبي هاشمي در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 9
    آخرین پست: سه شنبه 06 مرداد 1388, 11:40 صبح
  3. سوال: بدست آوردن لیست تمام پروسه های
    نوشته شده توسط hoax3r در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: جمعه 21 تیر 1387, 12:11 عصر
  4. لیست تمام API های ویندوز همراه با توضیح ومثال
    نوشته شده توسط mortezasaky در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: پنج شنبه 06 دی 1386, 17:12 عصر
  5. پاسخ: 7
    آخرین پست: چهارشنبه 26 اردیبهشت 1386, 00:56 صبح

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

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