powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# 2008, Как передать дальше событие?
7 сообщений из 7, страница 1 из 1
C# 2008, Как передать дальше событие?
    #38311548
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C# 2008,
Создал компонент, унаследовал от UserControl.
На компоненте есть PictureBox.

Пользователь подписывается на событие DoubleClick моего компонента, но поскольку он делает двойной щелчок на PictureBox, а не по самой форме UserControl, то поэтому событие не отрабатывает.
Как с этим справиться?
...
Рейтинг: 0 / 0
C# 2008, Как передать дальше событие?
    #38311592
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public event EventHandler FormDoubleClick
   {
          add
          {
                 PictureBox.DoubleClick += value;
          }
          remove
          {
                 PictureBox.DoubleClick -= value;
          }
   }
...
Рейтинг: 0 / 0
C# 2008, Как передать дальше событие?
    #38311641
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland, подписывайся на событие DoubleClick PictureBox'a и из его обработчика генерируй событие DoubleClick компонента.
...
Рейтинг: 0 / 0
C# 2008, Как передать дальше событие?
    #38311643
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationCharles Weyland,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public event EventHandler FormDoubleClick
   {
          add
          {
                 PictureBox.DoubleClick += value;
          }
          remove
          {
                 PictureBox.DoubleClick -= value;
          }
   }



Оч.близко. Но в отличие от обычного MouseDoubleClick, новое событие FormDoubleClick принимает аргументы EventArgs вместо MouseEventArgs.
Но это ладно.
Хотелось бы именно заменить существующий MouseDoubleClick на свой, возможно такое?
...
Рейтинг: 0 / 0
C# 2008, Как передать дальше событие?
    #38311646
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileгенерируй событие DoubleClick компонента.
Как?
Такой код:
Код: c#
1.
2.
if(MouseDoubleClick != null)
MouseDoubleClick(this, e)


не компилируется.
Или каким образом можно сгенерировать событие?
...
Рейтинг: 0 / 0
C# 2008, Как передать дальше событие?
    #38311717
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

EventHandler это для примера
используй тот тип события который тебе нужен
...
Рейтинг: 0 / 0
C# 2008, Как передать дальше событие?
    #38312473
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandКак?
Например, так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public partial class MyUserControl : UserControl
{
	public MyUserControl()
	{
		InitializeComponent();
		pictureBox1.MouseDoubleClick += HandlePictureBoxMouseDoubleClick;
	}

	private void HandlePictureBoxMouseDoubleClick(object sender, MouseEventArgs e)
	{
		OnMouseDoubleClick(e);
	}
}



Charles WeylandТакой код:
Код: c#
1.
if(MouseDoubleClick != null) MouseDoubleClick(this, e)


не компилируется. Или каким образом можно сгенерировать событие?
Этот код не откомпилируется с ошибкой "The event MouseDoubleClick can only appear on the left hand side of += or -=" так как это событие с переопределенными операциями add/remove. Для генерации таких событий класс обычно предоставляет метод для его генерации. Как метод OnMouseDoubleClick в примере выше.

Charles WeylandТакой код не компилируется.
Если хочешь чтобы тебе помогли следует указать точный текст ошибки компиляции.

Charles WeylandХотелось бы именно заменить существующий MouseDoubleClick на свой, возможно такое?
В общем случае термин "заменять" неуместен из-за отсутствия предмета для замены. На события подписываются или отписываются от них. Если говорить именно о событии MouseDoubleClick класса Control то есть возможность переопределить метод OnMouseDoubleClick (protected virtual void OnMouseDoubleClick(MouseEventArgs e)), но в рамках твоей задачи в этом нет необходимости.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# 2008, Как передать дальше событие?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]