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

نام تاپیک: شمردن و ذخیره مقدارهای کنترل های داینامیک

  1. #1
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    Exclamation شمردن و ذخیره مقدارهای کنترل های داینامیک

    سلام عرض میکنمن خدمت اعضای خوب این انجمن



    من یه برنامه نوشتم که با کلیک بر روی یک button ، دکمه های جدید ساخته میشه و در loctaton:(1,1) به نمایش در میاد به صورت داینامیک.
    اینم رو هم نوشتم که کاربر با درگ کردن هر دکمه میتونه اونو حرکت بده.
    حالا اینا به کنار.


    من چه جوری باید یه برنامه بنویسم که مقدار تکست همه دکمه ها که کاربر اضافه میکنه خوانده بشه و پشت سر هم در یک رشته ذخیره بشه؟
    ممنون میشم کدش رو بدید.
    توجه : ما نمیدونیم که کاربر چند تا دکمه اضافه میکنه

  2. #2
    کاربر دائمی آواتار CsharpNevisi
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    تهران
    پست
    1,489

    نقل قول: شمردن و ذخیره مقدار های کنترل های داینامیک



    string res = "";
    foreach(Control ctn in this.Controls)
    {
    if(ctn is Button)
    {
    Button btn = ((Button)ctn);
    res += btn.Text + "|";
    }
    }
    MessageBox.Show(res);

  3. #3
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: شمردن و ذخیره مقدار های کنترل های داینامیک

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


    string res = "";
    foreach(Control ctn in this.Controls)
    {
    if(ctn is Button)
    {
    Button btn = ((Button)ctn);
    res += btn.Text + "|";
    }
    }
    MessageBox.Show(res);
    کد ها کاملا درست کا کرد ممنونم.
    من این دستورات رو بلد نیستم. میشه یکم توضیح بیشتر بدید راجع به عمل دستورات؟ یا بگید چی سرچ کنم؟ خییلی ممنونم
    آخرین ویرایش به وسیله shahryars : دوشنبه 09 فروردین 1395 در 17:11 عصر

  4. #4
    کاربر دائمی آواتار CsharpNevisi
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    تهران
    پست
    1,489

    نقل قول: شمردن و ذخیره مقدار های کنترل های داینامیک

    ببین تو هرچی که رو فرمت میندازی مثل تکست باکس .. باتن .. چک باکس و ... درواقع داری یه کنترل رو فرم میندازی
    من یه کنترل با نام ctn درست کردم و از طریق اون داخل کنترل های فرم پیمایش انجام دادم .. :)

  5. #5
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: شمردن و ذخیره مقدار های کنترل های داینامیک

    یک سوال دیگه هم دارم خدمتتون همینجا بپرسم دیگه تایپینگ ایجاد نکنم.
    من یک numberupdown دارم توی فرمم و یک دکمه که باهاش دکمه داینامیک میسازم.
    با این numberupdown مقدار X یا Y رو میخوام تغییر بدم.
    میخوام وقتی روی یک دکمه داینامیک کلیک کردم ، این دکمه شناسایی بشه و با بالا و پایین کردن Numberupdown مقدار اون یک دکمه تغییر کنه و با فشار دادن دکمه Esc هیچ دکمه ای در حالت انتخاب نباشه که با numberupdown جابجا بشه.
    سوالم اینه که چجوری اون دکمه که کلیک میشه رو شناسایی کنم؟
    با متغیر ها میشه؟
    با چه دستوری؟

  6. #6

    نقل قول: شمردن و ذخیره مقدار های کنترل های داینامیک

    به وسیله خصیصه ActiveControl شی Container تون .

    this.ActiveControl

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

  7. #7
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: شمردن و ذخیره مقدار های کنترل های داینامیک

    نقل قول نوشته شده توسط مجتبی تاجیک مشاهده تاپیک
    به وسیله خصیصه ActiveControl شی Container تون .

    this.ActiveControl

    بررسی میکنید که شی انتخاب شده دکمه هست یا نه و ادامه کار ...
    پیشنهاد من اینه که توی حلقه ای که دکمه های دینامیک ایجاد می شن رویداد کلیک برای هر دکمه هم تعریف بشه
    و برای اینکه دکمه انتخابی موقع تغییر مقدار numberupdown مشخص بشه از تگ کنترل کمک بگیرین و البته یه متغییر از نوع int هم بایستی داشته باشین تا مقدار تگ ها رو براتون نگه داری کنه
     private int ctrID = 0; 
    private void createButton()
    {
    for (int i = 0; i < 5; i++)
    {
    Button btn = new Button();

    btn.Tag = i;
    btn.Location = new Point( i, i);
    btn.Text = "btn"+i;
    btn.Click += (sender, e) =>
    {
    ctrID = -1;
    numericUpDown1.Value = 0;
    numericUpDown1.Enabled = true;
    ctrID =(int)btn.Tag;
    };
    panel1.Controls.Add(btn);

    }
    }


    برای دکمه Esc روی فرم مربوطه ابتدا خاصیت KeyPreview رو در پراپرتی فرم true کنید
    و بعد در رویدادKeyPress بنویسن:

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {

    if (e.KeyChar == (char)27)
    {
    numericUpDown1.Value = 0;
    }

    }


    نمونه رو ضمیمه کردم تا متوجه منظورم بشین
    فایل های ضمیمه فایل های ضمیمه

  8. #8
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: شمردن و ذخیره مقدار های کنترل های داینامیک

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    پیشنهاد من اینه که توی حلقه ای که دکمه های دینامیک ایجاد می شن رویداد کلیک برای هر دکمه هم تعریف بشه
    و برای اینکه دکمه انتخابی موقع تغییر مقدار numberupdown مشخص بشه از تگ کنترل کمک بگیرین و البته یه متغییر از نوع int هم بایستی داشته باشین تا مقدار تگ ها رو براتون نگه داری کنه
     private int ctrID = 0; 
    private void createButton()
    {
    for (int i = 0; i < 5; i++)
    {
    Button btn = new Button();

    btn.Tag = i;
    btn.Location = new Point( i, i);
    btn.Text = "btn"+i;
    btn.Click += (sender, e) =>
    {
    ctrID = -1;
    numericUpDown1.Value = 0;
    numericUpDown1.Enabled = true;
    ctrID =(int)btn.Tag;
    };
    panel1.Controls.Add(btn);

    }
    }


    برای دکمه Esc روی فرم مربوطه ابتدا خاصیت KeyPreview رو در پراپرتی فرم true کنید
    و بعد در رویدادKeyPress بنویسن:

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {

    if (e.KeyChar == (char)27)
    {
    numericUpDown1.Value = 0;
    }

    }


    نمونه رو ضمیمه کردم تا متوجه منظورم بشین
    _____________
    بله دقیقا همینجوری میخوام ولی این فایل ضمیمه شما یه مشکلی داره.
    وقتی که دو بار کلید افزودن دکمه رو میزنیم ، بعد یکی از دکمه های اضافه شده رو تغییر میدیم ، مقدار دو تا از دکمه های اضافه شده تغییر میکنه
    این مشکل چجوری حل میشه؟

  9. #9
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: شمردن و ذخیره مقدار های کنترل های داینامیک

    نقل قول نوشته شده توسط shahryars مشاهده تاپیک
    _____________
    بله دقیقا همینجوری میخوام ولی این فایل ضمیمه شما یه مشکلی داره.
    وقتی که دو بار کلید افزودن دکمه رو میزنیم ، بعد یکی از دکمه های اضافه شده رو تغییر میدیم ، مقدار دو تا از دکمه های اضافه شده تغییر میکنه
    این مشکل چجوری حل میشه؟

    یا بایستی آمار دقیق کنترلهای افزوده شده رو داشته باشین و تگ هارو براساس اون شماره گزاری کنین ولی این کاردردسرش زیاده
    بهتره هربار کنترلها پاک و از نو ایجاد بشه

  10. #10
    کاربر دائمی آواتار CsharpNevisi
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    تهران
    پست
    1,489

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

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

    using System;using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;


    namespace Dinamic
    {
    public partial class Form1 : Form
    {

    public Form1()
    {
    InitializeComponent();
    numericUpDown1.Enabled = false;

    }

    private int ctrID = 0;
    private static int lastID = 0;


    private void createButton()
    {
    int len = lastID;
    for (int i = len; i < len + 5; i++)
    {
    Button btn = new Button();
    btn.Name = "btn1";
    btn.Tag = i;
    btn.Location = new Point(i, i);
    btn.Text = "btn" + i;
    btn.Click += (sender, e) =>
    {
    ctrID = -1;
    numericUpDown1.Value = 0;
    numericUpDown1.Enabled = true;
    ctrID = (int)btn.Tag;
    };
    panel1.Controls.Add(btn);
    lastID++;
    }
    }
    private void button1_Click(object sender, EventArgs e)
    {
    createButton();
    }


    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {


    foreach (Control ctn in this.panel1.Controls)
    {
    var tagID = (int)ctn.Tag;
    if (tagID == ctrID )
    {
    ctn.Text = numericUpDown1.Value.ToString();
    }
    }
    }



    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
    ctrID = -1;

    if (e.KeyChar == (char)27)
    {
    numericUpDown1.Value = 0;
    }


    }
    }
    }



  11. #11
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    تشکر تشکر از همه دوستان. شرمنده
    درباره این پروژه سوالاتی هست باز که انشالاه در آینده از استادان گرامی میپرسم.
    پروژم که تموم شد سورسش رو میزارم برای دوستان

  12. #12
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    ببخشید میشه این تکه از کد رو بازبینی کنید؟
    توی فرم خودم وقتی numberupdown رو تغییر میدم ارور میده

    private void numericUpDown1_ValueChanged(object sender, EventArgs e)        {


    foreach (Control ctn in this.panel1.Controls)
    {
    var tagID = (int)ctn.Tag;
    if (tagID == ctrID)
    {
    ctn.Text = numericUpDown1.Value.ToString();
    }
    }
    }


    ارور رو ضمیمه کردم
    عکس های ضمیمه عکس های ضمیمه

  13. #13
    کاربر دائمی آواتار CsharpNevisi
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    تهران
    پست
    1,489

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

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

  14. #14
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    نقل قول نوشته شده توسط CsharpNevisi مشاهده تاپیک
    مشکل به کنترلی هست که تگ نداره ..
    تگ که توی createButton() براش تعریف کردیم:
    btn.Tag = i;

    چجوری مشکلو حل کنم؟
    ___________
    عوض اینو تگو آی.دی بازی بهتره که خود کنترل رو تو یه شی از جنس باتن نگه داری
    منظورتونو نفهمیدم. چجوری این کارو بکنیم؟

    ببخشیدا هی وقتتونو میگیرم

  15. #15
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    دوست گرامی کد رو بصورت زیر اصلاح کن.شما بجز کنترل های از نوع Button کنترل های دیگه یی در پانل قرار دادی شما باید کنترل های داخل پانل رو فیلتر کرده که از نوع Button باشند.

    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {
    foreach (Control ctn in this.panel1.Controls.OfType<Button>())
    {
    var tagID = (int)ctn.Tag;
    if (tagID == ctrID )
    {
    ctn.Text = numericUpDown1.Value.ToString();
    }
    }
    }
    First,solve the problem then write the code

  16. #16
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    Thumbs up نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    مشکل حل شد دوستان ممنون از همه خیلی زحمتتون دادم خصوصا آقای خوخان که توی خصوصی دلیل این مشکل رو فرستادند.
    دلیل این بود که یک دکمه از قبل ساخته شده دیگه توی panel4م بود.
    بازم مشکلی توی این پروژه بود مطرح میکنم توی تایپینگ جدید. دیگه ببخشید
    ممنون از آقای رحیمی و آقای CsharpNevisi
    آخرین ویرایش به وسیله shahryars : سه شنبه 10 فروردین 1395 در 16:04 عصر دلیل: حل شدن مشکل

  17. #17
    کاربر دائمی آواتار CsharpNevisi
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    تهران
    پست
    1,489

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    عه .. من تازه کد نوشته بودم :(((((((((

    حالا میزارم خواستی ببین
    فایل های ضمیمه فایل های ضمیمه

  18. #18
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    نقل قول نوشته شده توسط CsharpNevisi مشاهده تاپیک
    عه .. من تازه کد نوشته بودم :(((((((((

    حالا میزارم خواستی ببین
    چه سیستم جالبی استفاده کردید!
    کدامو عوض کردم
    خیلی خیلی ببخشید بابت زحمتایی که دادم

  19. #19
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    ببخشید فقط این دکمه ها رو که اضافه میکنیم. با چه کدی توی کداتون دکمه بعدی مکانش عوض میشه و میره سمت راست تر؟؟؟
    به جای flowLayoutPanel نمیشه از پنل استفاده کرد؟

  20. #20
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    نقل قول نوشته شده توسط CsharpNevisi مشاهده تاپیک
    عه .. من تازه کد نوشته بودم :(((((((((

    حالا میزارم خواستی ببین
    ایده خوبیه اما به نظر می اد محدودیت ایجاد می کنه یعنی اگه بخوای توی فرم رنگ بندی کنی وتغییراتی در رنگها ایجاد کنی دست و پا گیر می شه
    اما خاصیت تگ معمولا از نظر برنامه نویسها دور می مونه و در یه همچی مواقعی کمک حالشون می شه

  21. #21
    کاربر دائمی آواتار CsharpNevisi
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    تهران
    پست
    1,489

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    ایده خوبیه اما به نظر می اد محدودیت ایجاد می کنه یعنی اگه بخوای توی فرم رنگ بندی کنی وتغییراتی در رنگها ایجاد کنی دست و پا گیر می شه
    اما خاصیت تگ معمولا از نظر برنامه نویسها دور می مونه و در یه همچی مواقعی کمک حالشون می شه
    سلام حالتون خوبه ... منظورتونو نفهمیدم

  22. #22
    کاربر دائمی آواتار CsharpNevisi
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    تهران
    پست
    1,489

    نقل قول: شمردن و ذخیره مقدارهای کنترل های داینامیک

    نقل قول نوشته شده توسط shahryars مشاهده تاپیک
    ببخشید فقط این دکمه ها رو که اضافه میکنیم. با چه کدی توی کداتون دکمه بعدی مکانش عوض میشه و میره سمت راست تر؟؟؟
    به جای flowLayoutPanel نمیشه از پنل استفاده کرد؟
    flowLayoutPanel کارش همینه

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

  1. مشكل در پيدا كردن كنترل هاي دايناميك در صفحه توسط جاوااسكريپت
    نوشته شده توسط * joodi * در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 6
    آخرین پست: سه شنبه 22 تیر 1389, 08:59 صبح
  2. position در کنترل های داینامیک
    نوشته شده توسط peymannaji در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: سه شنبه 31 شهریور 1388, 22:36 عصر
  3. رویداد در کنترل های داینامیک
    نوشته شده توسط hamedgh در بخش ASP.NET Web Forms
    پاسخ: 8
    آخرین پست: چهارشنبه 10 بهمن 1386, 16:55 عصر
  4. نحوه اضافه کردن کنترل های داینامیک
    نوشته شده توسط yavari در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: یک شنبه 16 مهر 1385, 06:55 صبح
  5. نحوه ساخت رویداد برای کنترل های داینامیک
    نوشته شده توسط kastakoorta در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: شنبه 07 آبان 1384, 01:49 صبح

برچسب های این تاپیک

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

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