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

نام تاپیک: رویداد Button.click برای button های ایجاد شده در زمان load

  1. #1

    رویداد Button.click برای button های ایجاد شده در زمان load

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


    for (int n=0;n<10;n++)
    {


    Button Bt=new Button();

    Bt.Text=""+n+"";
    Panel1.Controls.Add(Bt);
    }

    حالا میخوام یه رویداد کلیک ساده به اونها اختصاص بدهیم
    مثل
    label1.text=Bt.text
    یعنی با فشردن هر کدام ازکلیدهای ایجاد شده text روی کلید به label اختصاص یابد
    من این کار را برای کلیدهای موجود به سادگی انجام میدم .
    اما برای این کلیدها امکان نداره من متوجه نشدم چطور از این شکل دستور استفاده کنم

    Bt.Click += new EventHandler(Bt_Click);

    چون در name space راجع به کلیک object ی که موجود نیست تعریفی هم نشده
    من حتی با خواندن این سوال هم بازهم متوجه نشدم :sorry:


    Attatch کردن رویداد Click به یک کنترل در زمان اجرا
    http://www.barnamenevis.org/vi...querystring%2A


    لطفا کمک کنید در ضمن من زیادحالیم نیست لطفا یه کدی چیزی برام بگزارید با C#‎ توی code behind

  2. #2
    در کد بالا از bt برای اختصاص event استفاده شده در حالی که اگر کد اختصاص handler دقیقا بعد از ساخته شدن کنترل ها بیاد فقط آخرین کنترل در نظر گرفته خواهد شد. برای رفع مشکل برای هر کنترلتون یک ID مشخص کنید و با استفاده از متد findControl اون رو پیدا کنید و event رو بهش اختصاص بدید

    چند تا سوال و نکته:
    1) منظورتون رو میشه واضح تر بگید
    چون در name space راجع به کلیک object ی که موجود نیست تعریفی هم نشده
    2) کنترل های dynamic تون رو کجا می سازید؟ (منظورم توی کدوم رویداد)
    3) event هاتون رو کجا نسبت می دید؟

    * به سیکوئنس اجرای event های فرم توجه کنید:
    <p dir=ltr>
    1) Page_Init: The server controls are loaded and initialized from the Web form’s view state. This is the first step in a Web form’s life cycle.

    2) Page_Load: The server controls are loaded in the Page object. View state information is available at this point, so this is where you put code to change control settings or display text on the page.

    3) Page_PreRender: The application is about to render the Page object.

    4) Page_Unload: The page is unloaded from memory.

    5) Page_Disposed: The Page object is released from memory. This is the last event in the life of a Page object.

    6) Page_Error: An unhandled exception occurs.

    7) Page_AbortTransaction: A transaction is aborted.

    8) Page_CommitTransaction: A transaction is accepted.

    9) Page_DataBinding: A server control on the page binds to a data source.
    </p>

    * دقت کنید که حداکثر تا page_load باید event هاتون رو نسبت بدید چون تمامی event های کنترل های داخل صفحه تا قبل از page_prerender اتفاق افتاده اند
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  3. #3
    سلام
    ممنون از توجه شما
    من در مورد اول که یک ID برای کلیدها بزارم مشکل خاصی ندارم اما در مورد findControl اصلا تا حالا چیزی نشنیدم.
    لطف کنید یه مثال بزنید. یا اگر ممکنه مثال من رو کامل کنید.
    من این کد رو در pageload نوشتم و میخواستم هم در همون pageload هم event handler رو بنویسم
    منطور من هم از
    چون در name space راجع به کلیک object ی که موجود نیست تعریفی هم نشده
    این بود که خب نمیشه از کلیدی که ایجاد شده و در فرم نبوده بصورت


    Button btn=Button&#40;sender&#41;;

    استفاده کرد و متن روی کیلد یعنی از خاصیتtext یک Buttom1.text=label1.text به این صورت استفاده کرد و متن روی کلید را به جایی پاس داد. اصولا من نمیدونم این حرف من چقدر منطقی چون این خاصیت(Buttom1.text=label1.text ) بدون تعریف senedr به عنوان یک object نیز امکان پذیره ...
    اگه میشه کدددد please! :(

  4. #4
    اما در مورد findControl اصلا تا حالا چیزی نشنیدم.
    http://www.barnamenevis.org/vi...=117513#117513
    (توی همین پست هم می تونید به مثال آخر توجه کنید)

    حالا چرا توی همون حلقه event ها رو نسبت نمی دید؟ مثلا:
    		private void Page_Load&#40;object sender, System.EventArgs e&#41;
    &#123;
    for &#40;int n=0;n&lt;10;n++&#41;
    &#123;
    Button Bt=new Button&#40;&#41;;
    Bt.Text=""+n+"";
    Bt.Click += new EventHandler&#40;Bt_Click&#41;;
    Panel1.Controls.Add&#40;Bt&#41;;
    &#125;
    &#125;

    private void Bt_Click&#40;object sender, System.EventArgs e&#41;
    &#123;
    Response.Write&#40;&#40;&#40;Button&#41;sender&#41 ;.Text&#41;;
    &#125;

    به هر حال 2 راه دیگه هم وجود داره:
    اول:
    			foreach &#40;Control ctrl in Panel1.Controls&#41;
    if &#40;ctrl is Button&#41;
    &#40;&#40;Button&#41;ctrl&#41;.Click += new EventHandler&#40;Bt_Click&#41;;

    دوم: به شرطی که ID هاتون رو یه صورت btn1 , btn2 , ... تعریف کرده باشین
    			for &#40;int n=0;n&lt;10;n++&#41; 
    &#123;
    Button btn = &#40;Button&#41;Panel1.FindControl&#40;"btn"+n&#41 ;;
    btn.Click += new EventHandler&#40;Bt_Click&#41;;
    &#125;
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  5. #5

    تشکر

    با تشکر از شما دوست عزیز
    هرچند این textbox مجال صحبت را ندارد اما کوتاه میگم که:
    در جامعه ای که دانستن همیشه عاملی برای برتری و نگفتن ابزاری در جهت حفظ این برتری است ... این وب سایت و دوستانی که در آن فعالیت میکنند به برچیدن این اندیشه که (اگر بگی از دستت میره و برایت رقیب پیدا میشه ) گام برداشته اند.

    :flower:

  6. #6
    شما هم سعی کنید همین طور باشید. مطمئن باشید بیشتر از اون چیزی که یاد می دید یاد می گیرید :wink:
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

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

  1. رویداد Click برای تمام Button های فرم
    نوشته شده توسط javad2000 در بخش VB.NET
    پاسخ: 5
    آخرین پست: پنج شنبه 05 مهر 1386, 14:54 عصر
  2. استفاده از Button دلخواه
    نوشته شده توسط finalcut در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: یک شنبه 07 مرداد 1386, 09:15 صبح
  3. ایجاد button در حال اجرا
    نوشته شده توسط reyhane در بخش VB.NET
    پاسخ: 2
    آخرین پست: پنج شنبه 30 فروردین 1386, 22:02 عصر
  4. کامپوننتی برای یک Button
    نوشته شده توسط سیروس مقصودی در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 4
    آخرین پست: پنج شنبه 03 اسفند 1385, 23:25 عصر
  5. تشخیص کلیک button در page load
    نوشته شده توسط mirza در بخش ASP.NET Web Forms
    پاسخ: 14
    آخرین پست: پنج شنبه 10 فروردین 1385, 17:25 عصر

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

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