Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать sender в обработчик 
V
    Опции темы
ДобренькийПапаша
Дата 6.5.2010, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



У меня есть три toolStripMenuItem (Button). Одновременно может быть нажат только один из них. Завёл переменную для текущей выбранной кнопки и написал такой код в обработчике:

Код

private void PeriodtoolStripButton_CheckedChanged(object sender, EventArgs e)
        {
            if (currentButtonChoosed.Checked == false)
            {
                return;
            }
            currentButtonChoosed.Checked = false;
            currentButtonChoosed = (ToolStripButton) sender;
        }


И это работает)))

Я продублировал эти кнопки в стандартном ниспадающем MenuItemStrip. И написал такой код:

Код

 private void h1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PeriodtoolStripButton_CheckedChanged(H1toolStripButton, new EventArgs());
        }
        private void h3ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PeriodtoolStripButton_CheckedChanged(H3toolStripButton, new EventArgs());
        }
        private void d1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PeriodtoolStripButton_CheckedChanged(DtoolStripButton, new EventArgs());
        }


Так передавать неправильно  как я понял, поскольку это работает некорректно.

Как правильно?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
KelTron
Дата 6.5.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 11
Всего: 38



Почему бы ко всем кнопкам не привязать один обработчик, например такой:
Код

private void toolStripMenuItem_Click(object sender, EventArgs e)
        {
            h1ToolStripMenuItem.Checked = false;
            h3ToolStripMenuItem.Checked = false;
            d1ToolStripMenuItem.Checked = false;

            ((ToolStripButton)sender).Checked = true;       
        }



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
ДобренькийПапаша
Дата 6.5.2010, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Ок, спасибо. А почему не работает так как у меня?)))


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
KelTron
Дата 6.5.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 11
Всего: 38



Что то метод PeriodtoolStripButton_CheckedChanged не внушает доверия..)


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
ДобренькийПапаша
Дата 9.5.2010, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Кстати вы не так поняли мой вопрос.
Ситуация такая:
В программе с SDI интерфейсом есть объект ToolStrip, содержащий три tooStripButton со свойством CheckOnClick=true; Нужно обеспечить, чтобы одновременно мог быть выбран только один toolStripButton.
Реализовал так (это работает корректно):
Код

private void LinestoolStripButton_CheckedChanged(object sender, EventArgs e)
       {
           //currentChartType хранит текущую выбранную кнопку
           if (currentChartType.Checked == false)
           {
               return;
           }
           currentChartType.Checked = false;
           currentChartType = (ToolStripButton)sender;
       }


Мне нужно продублировать эти кнопки в MenuStrip. Продублировал. И повесил на них такой код:
Код

private void линияToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LinestoolStripButton_CheckedChanged(LinestoolStripButton, new EventArgs());
        }
        private void барыToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LinestoolStripButton_CheckedChanged(StocktoolStripButton, new EventArgs());
        }
        private void свечиToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LinestoolStripButton_CheckedChanged(CandletoolStripButton, new EventArgs());
        }



Однако это работает некорректно. Как правильно продублировать?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.