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


Автор: v_enom 29.3.2009, 19:30

как предать в обработчик событий параметры???
У меня задача по выбранной закладке генерировать меню состоящие из названий колонок dataGrid.

вот событие:
Код



SomeFonction()
{
....

DataGridView dataGrid = new DataGridView();
....  // потом всякие настройки делаю

// и наконец добавляю событие
 tabControl1.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabControl1_Selecting);

private void tabControl1_Selecting(object sender)
        {            
          
            FormEditorMenu(dataGrid, this.splitContainer1);    // надо чтобы тут можно было обрабатывать dataGrid
        }

}

 smile 

Автор: -Mikle- 29.3.2009, 19:55
DataGridView dataGrid;
не получится вынести за пределы SomeFonction???

ну или анонимный метод вам в руки:
Код

        void SomeFonction()
        {
            DataGridView dataGrid = new DataGridView();
            // потом всякие настройки делаю

            // и наконец добавляю событие
            tabControl1.Selecting +=
                delegate(object sender, TabControlCancelEventArgs e)
                {
                    //dataGrid.Columns - доступен здесь
                };
        }

Автор: Rififi 29.3.2009, 20:01
v_enom
надо сделать датагрид членом класса, в котором происходит обработка события

Автор: v_enom 29.3.2009, 20:05
Цитата(Rififi @ 29.3.2009,  20:01)
v_enom
надо сделать датагрид членом класса, в котором происходит обработка события

нельзя так сделать, потому что у меня датагрид каждый раз  внутренней функцией создается.
И придется очень-очень много переделывать.
Есть ли какой-то другой способ?

Автор: v_enom 29.3.2009, 21:07
спасибо, буду пробовать

Автор: KelTron 30.3.2009, 09:29
Можно использовать свойство Tag

Код

private void SomeFunction() 
{
    DataGridView dataGrid = new DataGridView();

    this.tabControl1.Tag = dataGrid;
    this.tabControl1.Selecting +=
        new System.Windows.Forms.TabControlCancelEventHandler(tabControl1_Selecting);
}

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
    TabControl tabControl = (TabControl)sender;
    DataGridView dataGrid = (DataGridView)tabControl.Tag;
    FormEditorMenu(dataGrid, this.splitContainer1);
}


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