Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2009, 12:11   #1
EdNovice
Пользователь
 
Регистрация: 13.04.2007
Сообщений: 65
По умолчанию События компонентов

Есть два компонента (например две кнопки), необходимо чтоб при возникновении события "Click" первой кнопки возникало еще событие другой!
EdNovice вне форума Ответить с цитированием
Старый 13.03.2009, 13:50   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Код:
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Button 1");
            button2_Click(sender, e);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Button 2");
        }
MaTBeu вне форума Ответить с цитированием
Старый 13.03.2009, 19:43   #3
EdNovice
Пользователь
 
Регистрация: 13.04.2007
Сообщений: 65
По умолчанию

Кнопки это были как пример! На форме есть 10 ImageBox созданных в рантайме. По клику по одному из них необходимо вызвать событие только нескольких из них, например у которых значение свойства Tag больше чем у кликнутого ImageBox.
Перебором в Form1.Controls нахожу нужный ImageBox, а вот ((ImageBox)Form1.Controls[i]).Click не хочет компилиться...
EdNovice вне форума Ответить с цитированием
Старый 14.03.2009, 00:05   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Ну естественно не компилится, потому что на форме не только ImageBox лежат. Приведите код, а там посмотрим.
MaTBeu вне форума Ответить с цитированием
Старый 14.03.2009, 10:32   #5
EdNovice
Пользователь
 
Регистрация: 13.04.2007
Сообщений: 65
По умолчанию

Код:
public class MyImgBox : PictureBox
    {
        protected override void  OnClick(EventArgs e)
        {
            for (int i = 0; i < this.Parent.Controls.Count; i++)
            {
                if (this.Parent.Controls[i] is MyImgBox && (int)this.Parent.Controls[i].Tag >= (int)this.Tag)
                {
                    this.Parent.Controls[i].Click();
                }
            }
            /*Сдесь прописано перемещение данного экземпляра в зависимости от определенных условий*/
            base.OnClick(e);
        }
    }
Сообщение компилятора:The event 'System.Windows.Forms.Control.Click ' can only appear on the left hand side of += or -=.

Что нельзя напрямую вызвать событие? Почему? Ведь событие строиться на делегатах, а с помощью делегатов можно вызвать функцию на которую ссылается делегаты.
Например:
public delegate string GetAString();
int X=40;
GetAString del = new GetAString(X.ToString());
string s = del();
Этот код работает. Почему на событиях это не работает, ведь они тоже строятся на делегатах.

Последний раз редактировалось MaTBeu; 14.03.2009 в 12:00.
EdNovice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
События формы Shouldercannon Общие вопросы Delphi 10 13.01.2009 01:32
События компонентов Hottabych Работа с сетью в Delphi 1 13.09.2008 00:10
Перехват события juden Общие вопросы Delphi 5 23.05.2007 12:21
Обработчик события... Flash_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 12.03.2007 21:24
Назначение события EA_Sports Общие вопросы Delphi 2 11.03.2007 00:45