Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Как привязать обработчик на динамический контрол?


Автор: cosamia 31.3.2006, 13:36
Как привязать обработчик на динамически созданный контрол?

если можно, пример плз .

Автор: Exception 31.3.2006, 16:56
Что как? По-обычному smile
Код

TextBox myDynamicTextBox = new TextBox;
//...
myDynamicTextBox.Click += new EventHandler(MyClickEventHandler);
//...

void MyClickEventHandler(object sender, EventArgs e)
{
   // код по обработке здесь
}

Автор: cosamia 31.3.2006, 17:55
с обычной кнопкой понятно. а вот если у меня чекбокс и надо различить какой чекбокс был чекнут то как быть? у кнопки можно было командаргумент установить, а у чекса что установить чтобы однозначно знать у кого произошел чек?

Автор: arilou 31.3.2006, 18:00
cosamia, в обработчике события Click есть два параметра (object sender, EventArgs e). В sender у тебя будет ссылка на checkbox.

Автор: cosamia 31.3.2006, 18:11
а поточнее можно? с примером желательно как из сендера вытащить ее?
Добавлено @ 18:13
хотя похоже сделал уже...

Автор: Exception 31.3.2006, 21:03
Просто преобразуй sender к типу CheckBox и сравнивай Text.
Добавлено @ 21:07
Ну или Name smile

Автор: Ch0bits 31.3.2006, 22:33
Код

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

namespace WindowsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Кнопка "Создать много чекбоксов!"
        /// </summary>
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                CheckBox ch = new CheckBox();
                ch.Top = i * 25;
                ch.Name = "Checkbox " + i.ToString();   // Тут задаём имя
                ch.Text = "Привет, я " + ch.Name;
                ch.Click += new EventHandler(ch_Click); // Добавляем обработчик события OnClick
                this.Controls.Add(ch);                  // Добавляем на форму
            }
        }

        void ch_Click(object sender, EventArgs e)
        {
            CheckBox ch = sender as CheckBox;           // ch - это ссылка на sender приведённый к типу CheckBox 
            MessageBox.Show(ch.Text+"\n"+ch.Name);
        }
    }
}

Автор: mr.DUDA 1.4.2006, 21:51
Ch0bits, тут немного другое, ASP.NET smile ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)