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

نام تاپیک: تکرار بینهایت مقادیر یک آرایه

  1. #1
    کاربر دائمی آواتار mahdi_armed
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    سن
    31
    پست
    184

    Post تکرار بینهایت مقادیر یک آرایه

    سلام دوستان
    من یک آرایه دارم به صورت زیر
    string[] name = new string[]{"a","b","c","d","e"}


    میخوام با استفاده از timer مقدایر این آرایه رو دونه دونه توی یک label چاپ کنه
    و این موضوع بینهایت بار تکرار بشه

    و خروجی به صورت زیر باشه
    a b c d e a b c d e a b c d e a b c d e ...

    یعنی به عبارتی هر ثانیه یکی از این حروف چاپ شه و تا بینهایت تکرار بشه

  2. #2

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

    خب باید یک متغیر بسازید که از 0 تا 4 بره بعد دوباره 0 بشه.
    بعد هم هر بار باید خونه ای که اون شماره رو داره از توی آرایه برداره بنویسه توی لیبل.
    البته
    فکر میکنم یه حدی بیشتر نشه وارد کرد.

  3. #3
    کاربر دائمی آواتار mahdi_armed
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    سن
    31
    پست
    184

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

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    خب باید یک متغیر بسازید که از 0 تا 4 بره بعد دوباره 0 بشه.
    بعد هم هر بار باید خونه ای که اون شماره رو داره از توی آرایه برداره بنویسه توی لیبل.
    البته
    فکر میکنم یه حدی بیشتر نشه وارد کرد.

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

  4. #4

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

    نقل قول نوشته شده توسط mahdi_armed مشاهده تاپیک
    سلام دوستان
    من یک آرایه دارم به صورت زیر
    string[] name = new string[]{"a","b","c","d","e"}


    میخوام با استفاده از timer مقدایر این آرایه رو دونه دونه توی یک label چاپ کنه
    و این موضوع بینهایت بار تکرار بشه

    و خروجی به صورت زیر باشه
    a b c d e a b c d e a b c d e a b c d e ...

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






  5. #5
    کاربر دائمی آواتار taghvajou
    تاریخ عضویت
    تیر 1387
    محل زندگی
    تهران
    سن
    39
    پست
    571

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

    نقل قول نوشته شده توسط mahdi_armed مشاهده تاپیک
    سلام دوستان
    من یک آرایه دارم به صورت زیر
    string[] name = new string[]{"a","b","c","d","e"}


    میخوام با استفاده از timer مقدایر این آرایه رو دونه دونه توی یک label چاپ کنه
    و این موضوع بینهایت بار تکرار بشه

    و خروجی به صورت زیر باشه
    a b c d e a b c d e a b c d e a b c d e ...

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

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

    صورت مسئله: یه آرایه ای از اسامی داریم که میخوایم در هر ثانیه یکیش به متن لیبل اضافه بشه. چطور با استفاده از تایمر هر ثانیه متنی که نوبتشه رو انتخاب کنیم و پشت سر قبلی نمایش بدیم؟ (اگر درک بنده از سوال اشتباه بود، لطفا خودتون دقیقتر بپرسین)

    فرض اول: البته شما گفتی تو یک لیبل چاپ بشه ، فعلا فرض میکنیم منظور شما اینه تو یه کنترل لیبل تو فرم نمایش داده بشه. (یه حالت هم اینه که روی لیبل کاغذی چاپ بشه)

    و اما بعد:

    ابتدا تو کلاس اصلی فرم یه نمونه ویندوز تایمر بسازین.
    private Timer printerTimer = new Timer();

    تو بخش اماده سازی فرم:
    1- ویژگی وقفه رو هزار میلی ثانیه (یک ثانیه) مقدار دهی کنین
    2- رویداد اتمام تایمر رو بسازین
    3- تایمر رو استارت کنین

    printerTimer.Tick += printerTimer_Tick;
    printerTimer.Interval = 1000;
    printerTimer.Start();




    خب تا اینجا، این شد که وقتی فرم بالا میاد، یه تایمر ساخته میشه و استارت میخوره و بعد از هزار میلی ثانیه، تیک اجراش میخوره.

    پس حالا بریم تو رویداد تیکش، دو تا کار باید بکنیم.
    1- متن رو چاپ کنیم.
    خب باید یه اندیس چندم اون آرایه رو هم نگه داریم که بعد از نمایش، ترتیب رو گم نکنیم. لذا تو کانستراکتور فرم یه اینت بذاریم :
            private int toPrintIndex = 0;



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


    uxNamesLabel.Text += string.Format("{0}, {1}", names[toPrintIndex], new string(' ', 1));
    toPrintIndex++;
    if (toPrintIndex == names.Length)
    toPrintIndex = 0;




    2- مجدد تایمر رو اجرا کنیم. اینطوری بعد از اینتروال (وقفه) مجدد تایمر تیک میخوره و میاد برای چاپ و مجدد استارت و ... به قول شما تا بی نهایت (البته این بی نهایت نیست، چون به استارت و پایان فرم بستگی داره. اگه قرار باشه بی نهایت باشه بر اساس ساعت واقعی داستان فرق میکنه)


    نهایتا به صورت کل میشه این:

    public partial class TestForm : Form
    {
    private Timer printerTimer = new Timer();
    private string[] names = new string[] { "Ali", "Amir", "Reza", "Naser", "Mahdi" };
    private int toPrintIndex = 0;
    public TestForm()
    {
    InitializeComponent();
    uxNamesLabel.Text = string.Empty;
    printerTimer.Tick += printerTimer_Tick;
    printerTimer.Interval = 1000;
    printerTimer.Start();
    }


    void printerTimer_Tick(object sender, EventArgs e)
    {
    uxNamesLabel.Text += string.Format("{0}, {1}", names[toPrintIndex], new string(' ', 1));
    toPrintIndex++;
    if (toPrintIndex == names.Length)
    toPrintIndex = 0;
    printerTimer.Start();
    }
    }



  6. #6

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

    سلام
    به نظر بنده ، خیلی سریع و دم دستی از Queue استفاده کن و تمام (صد البته که راه حلی که خدمتتون میگم برای صورت مسئله شماست که عجیب هم هست )


    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;


    namespace WindowsFormsApp1
    {
    public partial class Form1 : Form
    {
    private readonly Queue<string> stringsQueue;
    public Form1()
    {
    InitializeComponent();

    var names = new [] {"a", "b", "c", "d", "e"};
    stringsQueue = new Queue<string>(names);
    }


    private void timer1_Tick(object sender, EventArgs e)
    {
    var queueItem = stringsQueue.Dequeue();
    label1.Text += queueItem;
    stringsQueue.Enqueue(queueItem);
    }
    }
    }
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

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

  1. سوال: روش آپلود کردن سایت بر روی هاست و مدیریت محتوای سایت...
    نوشته شده توسط vahid1993 در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: جمعه 07 خرداد 1395, 19:48 عصر
  2. پاسخ: 3
    آخرین پست: چهارشنبه 02 اردیبهشت 1394, 12:02 عصر
  3. سوال: مگر 8 بیت یک بایت نمی شود پس چگونه در این الگوریتم تعداد بیت ها یک بایت میشوند؟
    نوشته شده توسط complexcoding در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: دوشنبه 14 فروردین 1391, 15:21 عصر

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

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