_Q12_ Ответов: 1

Пользовательское событие с EventArgs в электронной


Я пишу код для удовольствия, и я не профессиональный программист.
Я делаю это пользовательское событие в простом классе, который должен быть меню. Но я не могу сделать свое пользовательское событие щелчка, как традиционное событие щелчка кнопки.
В form1, когда я получаю доступ к событию кнопки Меню, он работает нормально, но без функциональности кнопок мыши (левая,правая). Я хочу этого.
Вот как это выглядит сейчас: void MenuButon_MausicaClick()
и как я хочу, чтобы это быть: MenuButon_MausicaClick недействительным(объект отправителя, EventArgs в электронной)
Я пробовал разные перестановки, в основном угадывая, куда добавить "(object sender, EventArgs e)" или "EventHandler" внутри моего пользовательского класса, но я получаю тонну ошибок, поэтому сдаюсь.

Что я уже пробовал:

       //simple external Menu class with custom event
       public delegate void ButtonClickedika_delegate();
       public event ButtonClickedika_delegate MausicaClick;
       void button1_Click(object sender, EventArgs e)
       {
           if (MausicaClick != null) { MausicaClick(); }
       }

       //In Form1
       public Form1()
       {
           InitializeComponent();
MenuButon.MausicaClick += new Menu_dll.Top.ButtonClickedika_delegate(MenuButon_MausicaClick);
       }

       //should be: void MenuButon_MausicaClick(object sender, EventArgs e)
       void MenuButon_MausicaClick() //<<how to add "EventArgs e"
       {
               if (e.Button == System.Windows.Forms.MouseButtons.Left)
               {
               }
       }

1 Ответов

Рейтинг:
2

Ashutosh Gpt

измените тип события вашего пользовательского класса На вам не нужен никакой пользовательский делегат

public event System.EventHandler<System.EventArgs> MausicaClick

и когда вы подпишете его он даст вам
MenuButon_MausicaClick(object sender, EventArgs e)


_Q12_

if (MausicaClick != null) { MausicaClick(); }
//Ошибка 1 имя 'MausicaClick' не существует в текущем контексте

[no name]

система публичных мероприятий.EventHandler<system.eventargs> MausicaClick
удалите пользовательский делегат, как вы используете встроенный eventhandler
if(MausicaClick != null)
{
MausicaClick(null, null); //если у вас есть что-то для отправки из исходного класса, то отправьте отправителя как объект
}

_Q12_

я не упомянул, что у меня уже есть некоторый код, который должен выполняться внутри этого события из моего класса меню.
Я удалил свой старый делегат, добавил ваш новый делегат, но я не могу ссылаться на этот новый делегат с помощью кнопки, которая находится внутри этого класса меню, который уже делает некоторые важные вещи(в фоновом режиме).

Сделайте мне весь код, который запускает некоторые вещи внутри класса меню в событии щелчка, и имейте функциональность щелчка eventargs, и как это объявлено в Form1. Используйте мой оригинальный код, который я опубликовал, держите его простым, это должно быть несколько строк кода для вас, и не так уж много проблем. Спасибо!

//вот как это выглядит именно сейчас:
система публичных мероприятий.EventHandler в&л;система.EventArgs в&ГТ; ButtonClickedika_delegate;
public void button1_Click(отправитель объекта, EventArgs e)
{
мкур = истина;
iswire = ложь;
isrezistor = ложь;
ислед = ложь;
if (MausicaClick != null) { MausicaClick(); }
}

_Q12_

я просто даю вам 5 звезд но я приму решение если код работает в мою пользу :)

[no name]

убедитесь, что ваш делегат класса меню также принят, т. е. ButtonClickedika_delegate из модуля menu_dll также имеет тот же тип делегата.
Вы тоже можете изменить либо удалить уже EventArgs в качестве параметра.
публичное мероприятие EventHandler<eventargs> MausicaClick;
ОПЕРАЦИОННАЯ

открытый делегат ButtonClickedika_delegate недействительным(объект отправителя, EventArgs аргументы);

Если вы можете прислать мне все ваши занятия здесь, то я, возможно, смогу вам помочь. но это то, что я понимаю, создавая MenuClass.

общественности частичного класс form1 : форма
{
публичное мероприятие EventHandler<eventargs> MausicaClick;
private MenuButton MenuButon = новый MenuButton();
void button1_Click(отправитель объекта, EventArgs e)
{
MenuButon_MausicaClick(нуль, нуль);
}

//В Форме 1
открытый form1()
{
метод InitializeComponent();
Менубутон.MausicaClick += MenuButon_MausicaClick;
}

частная MenuButon_MausicaClick недействительным(объект отправителя, EventArgs аргументы)
{
бросить новое исключение notimplementedexception();
}
}

и некоторые менуклассы, созданные для этого, могут быть не одинаковыми, а просто для справки.
публичный класс MenuButton
{
публичное мероприятие EventHandler<eventargs> MausicaClick;
}

_Q12_

Спасибо!