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

نام تاپیک: چگونگي ساخت يك دكمه به صورت ايندكسي

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

    Tick چگونگي ساخت يك دكمه به صورت ايندكسي

    سلام
    جواب سوال ( صفحه 2 پست 2)
    من مي خوام بدونم چطور مي شه يك دكمه يا هر آبجكت ديگه اي رو به صورت ايندكسي ساخت و در حلقه ها ازش استفاده كرد.

    مانند كاري كه vb6 مي كرد وقتي يك آبجكت رو كپي مي كردي و پيست مي پرسيد كه مي خواي ايندكسي بشه .

    البته مي شه به صورت دو بعدي بشه مثلا در موقع استفاده بنويسم :
    btn(i,j).text="dsds"
    آخرین ویرایش به وسیله EbiPenMan : سه شنبه 12 آذر 1387 در 07:29 صبح

  2. #2

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    یعنی چی به صورت ایندکسی ساخت؟

    بیشتر توضیح بدین.

  3. #3
    VIP
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    www
    سن
    40
    پست
    1,247

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    در دات نت اين موضوع ديگه وجود نداره ولي دات نت راههاي ديگه اي براي اين كار داره مثلا اگر ميخواهيد در داخل اشيا يك فرم loop بزنيد ميتونيد ازاين كد :
    foreach (Control c in this.Controls)

    {

    if (c.GetType().ToString() == "System.Windows.Form.Textbox")

    {

    //your code goes here

    }

    }



    و يا ميتونيد براي اشيا خاص يه نيم نگاهي به كد زير داشته باشيد :
    TextBox[] txts = new TextBox[5];

    و همچنين ميتونيد كليد واژه "collection" رو به صورت تركيبي با شي مورد نظر جستجو كنيد و باور كنيد همين الان كه اين پست رو ميفرستم شايد بيش از 7 و 8 نوع كار تركيبي در ذهنم هست ، اگه جستجو كنيد راههاي مناسب تري هم پيدا ميكنيد.

  4. #4
    VIP
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    www
    سن
    40
    پست
    1,247

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    نقل قول نوشته شده توسط h.jaza مشاهده تاپیک
    یعنی چی به صورت ایندکسی ساخت؟

    بیشتر توضیح بدین.
    در vb6 ميشه چند آبجكت رو در يك گروه و حتي با يك اسم (اگه درست يادم باشه) ساخت كه به وسيله index از هم تمايز داده ميشن مثل control Arry در دات نت تقريبا.

  5. #5
    کاربر تازه وارد آواتار EbiPenMan
    تاریخ عضویت
    آذر 1384
    محل زندگی
    TehranPars
    پست
    57

    Question نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    نقل قول نوشته شده توسط majid325 مشاهده تاپیک
    در دات نت اين موضوع ديگه وجود نداره ولي دات نت راههاي ديگه اي براي اين كار داره مثلا اگر ميخواهيد در داخل اشيا يك فرم loop بزنيد ميتونيد ازاين كد :
    foreach (Control c in this.Controls)

    {

    if (c.GetType().ToString() == "System.Windows.Form.Textbox")

    {

    //your code goes here

    }

    }



    و يا ميتونيد براي اشيا خاص يه نيم نگاهي به كد زير داشته باشيد :
    TextBox[] txts = new TextBox[5];

    و همچنين ميتونيد كليد واژه "collection" رو به صورت تركيبي با شي مورد نظر جستجو كنيد و باور كنيد همين الان كه اين پست رو ميفرستم شايد بيش از 7 و 8 نوع كار تركيبي در ذهنم هست ، اگه جستجو كنيد راههاي مناسب تري هم پيدا ميكنيد.
    ممنون از شما دوست عزیز

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

    مثلا اگه تعداد خانه ها 60 تا باشه :

    for(x=0;x<=10;x++)z
    for(y=0;y<=6;y++)z

    lbl(1-x,1-y)z
    lbl(x,1-y)z
    lbl(1+x,1-y)z
    lbl(1-x,y)z
    lbl(1+x,y)z
    lbl(1-x,y+1)z
    lbl(x,y+1)z
    lbl(x+1,y+1)z

    (z ها رو حذف کنید)
    کار این کد اینکه : اگر خونه بمب نباشه 8 تا خونه اطرافش رو چک می کنه و تعداد بمب ها رو در اون قرار می ده.

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

  6. #6

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

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

  7. #7
    کاربر تازه وارد آواتار EbiPenMan
    تاریخ عضویت
    آذر 1384
    محل زندگی
    TehranPars
    پست
    57

    Wink نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    نقل قول نوشته شده توسط h.jaza مشاهده تاپیک
    می تونی به جای استفاده از کلی لیبل از یه دیتاگرید استفاده بکنی که هر خونش باتن هست. اینجوری خیلی ساده تر می تونی این کارهایی رو که می خوای انجام بدی و پروژه ای رو که مطرح کردی، پیاده سازی بکنی.
    آخه اگه بازي رو ديده باشي زير هر دكمه يه پيكچر باكس هست كه يا تعداد بمب هاي اطراف رو نشون ميده با در آخر بازي تصوير بمب رو نشون مي ده.

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

    آخه اول بازي يك آرايه 2 بعدي به صورت رندم مقدار مثلا 10 تا از عنصر ها رو بمب مي كنه.
    من بر اساس اين آرايه بايد پيكچر باكسي رو كه ايندكسش با اون يكي هست رو تغيير بدم و ...

  8. #8

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

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

  9. #9
    کاربر تازه وارد آواتار EbiPenMan
    تاریخ عضویت
    آذر 1384
    محل زندگی
    TehranPars
    پست
    57

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    تا اونجا كه من خبر دارم ديتاگريد رو هر فيلدش رو ميشه فقط يه button گذاشت . حلا براي picturebox هاي زيرش چي كار كنم.

    راه آقا مجيد هم آره ولي چون آرايه من 2 بعدي هست . براي اينكه جاي button رو راحت تر پيدا كنم مي خوام اونم يه جور دو بعدي باشه.

    اصلا من 3 تا دكمه دارم توي يه فرم اگه به خوام text هر كدوم رو عوض كنم اينطور ميشه :
    btn_1.text="Mine"
    btn_2.text="Mine"
    btn_3.text="Mine"
    حالا اگه اينا به صورت ايندكسي باشن اينطوري مي شه استفاده كرد :
    for(x=0;x<2;X++)z
    btn(x).text="Mine"
    حالا اينارو چطوري بسازم. دو بعديش چطور ميشه ساخت؟

  10. #10

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

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

    سه تا پیشنهاد:
    1- استفاده از روش دوستمون، آقا مجید که البته اونجوریمان که شما می گید نیست. با یکم فکر کردن، خیلی ساده میشه اون چیزی رو که می خوای پیاده سازی کرد.

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

    3- و روش آخری هم از همه بهتره و ساده تر و البته نیاز به مطالعه ی زیاد داره، طراحی توسط WPF هستش که دیگه اصلا کار رو هلو می کنه ولی باید بشینی قشنگ WPF یاد بگیری که ...

  11. #11
    VIP
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    www
    سن
    40
    پست
    1,247

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    نقل قول نوشته شده توسط EbiPenMan مشاهده تاپیک
    تعداد پیکچر باکس ها و button هام زیاد هست و می خوام در یک حلقه اعداد تعداد بمب ها رو در پیکچر باکس ها بنویسم
    .
    شما نيازي به پیکچر باکس نداريد از Button.Image استفاده كنيد
    حالا چطور می شه که این لیبل ها رو من در دات نت اینطوری استفاده کنم.
    من يه نمونه كد كوچيك از codeproject ميزارم كه يه ديدي از كار كردن با اشيا به صورت arry در دات نت داشته باشي:
    ButtonArray = new System.Windows.Forms.Button[iWidth,iHeight];

    int x,y;
    for (y=0 ; y<iHeight ; y++)
    for (x=0 ; x<iWidth ; x++)
    {
    ButtonArray[x,y] = new System.Windows.Forms.Button();
    ButtonArray[x,y].Location = new System.Drawing.Point(20 + x*16, 70 + y*16);
    ButtonArray[x,y].Name = "";
    ButtonArray[x,y].Size = new System.Drawing.Size(16,16);

    iCellAddress = (0x1005340) + (32 * (y+1)) + (x+1);
    memory = pReader.ReadProcessMemory((IntPtr)iCellAddress,1,o ut bytesReaded);
    iIsMine = memory[0];

    if (iIsMine == 0x8f)
    ButtonArray[x,y].Image = ((System.Drawing.Bitmap)
    (resources.GetObject("button1.Image")));

    this.Controls.Add(ButtonArray[x,y]);
    }


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

  12. #12
    کاربر تازه وارد آواتار EbiPenMan
    تاریخ عضویت
    آذر 1384
    محل زندگی
    TehranPars
    پست
    57

    Thumbs up نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    سلام به همگي

    دوستان ممنونم از همه تون براي راهنمايي هايي كه به من كرديد. مخصوصا از H.jaza و majid325 .

    من تونستم جواب سوالم رو در اين لينك سايت آخر در سورس برنامش پيدا كنم. خيلي راحت هست و اصلا لازم نيست اين همه راه بريم.

    من با خودم تو اين فكر بودن كه تو vb6 به اون راحتي مي شود آبجكت رو به صورت آرايه اي كرد آخه ميشه دات نت بياد اينو برداره يا سخت تر كنه.

    اين كد پايين نه تا button مي سازه :

    private System.Windows.Forms.Button[,] ButtonArray = null;
    private void Form1_Load(object sender, EventArgs e)
    {
    ButtonArray = new System.Windows.Forms.Button[3, 3];

    int x, y;
    for (y = 0; y < 3; y++)
    for (x = 0; x < 3; x++)
    {
    ButtonArray[x, y] = new System.Windows.Forms.Button();
    ButtonArray[x, y].Location = new System.Drawing.Point(20 + x * 16, 70 + y * 16);
    ButtonArray[x, y].Name = "";
    ButtonArray[x, y].Size = new System.Drawing.Size(16, 16);

    this.Controls.Add(ButtonArray[x, y]);
    }

  13. #13

    نقل قول: چگونگي ساخت يك دكمه به صورت ايندكسي

    دوست عزیز از شما تشکر می کنم.

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

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

    با تشکر
    عکس های ضمیمه عکس های ضمیمه

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

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