Я разрабатываю приложение Windows Forms и хотел бы передать событию MouseClick в Picturebox параметр типа MouseEventArgs вместо EventArgs, но отладчик выдает ошибку для делегата, когда я это делаю.
void PictureBox1Click(object sender, MouseEventArgs e)
{
// Some code
}
///////
// imageBox
//
this.imageBox.Location = new System.Drawing.Point(12, 12);
this.imageBox.Name = "imageBox";
this.imageBox.Size = new System.Drawing.Size(1758, 829);
this.imageBox.TabIndex = 0;
this.imageBox.TabStop = false;
this.imageBox.Click += new System.EventHandler(this.PictureBox1Click);
//
Заранее спасибо, Джекоб
Когда событие щелчка вызывается щелчком мыши, если вы обрабатываете событие Click, то тип e во время выполнения будет MouseEventArgs, как уже упоминал Джими. Но в некоторых элементах управления, таких как Button, вы можете поднять щелчок без щелчка мыши, в таких случаях типом времени выполнения e является EventArgs. Если вам интересно щелкнуть мышью и вы хотите получить e как MouseEventArgs, вам следует обработать событие MouseClick.
Привет! Попробую обновить. Спасибо.





Вы можете поймать событие щелчка мыши из родительского элемента управления, где передаются аргументы события щелчка мыши, проверить, находится ли позиция мыши внутри поля изображения, и продолжить оттуда?!
Какие события существуют, какие аргументы они принимают, и действительно, когда они вызываются и какие значения им присваиваются, полностью зависит от автора этого класса. Как простой пользователь этого кода, вы не можете его изменить.
Вы можете создать подкласс Picature Box, куда вы можете добавить свое собственное событие «ClickWithExtraArguments» или что-то в этом роде. Но поднять его вместо стандартного может быть непросто. Иногда код "RaiseEvent[X]" помечен как защищенный, поэтому вы можете переопределить его. RaiseMouseEvent — один из них, но он действительно углубляется в обработку событий.
Какую информацию вы пытаетесь передать через аргументы событий? Не можете ли вы просто получить информацию в существующем обработчике события Click?
Когда событие щелчка было вызвано щелчком мыши, если вы обрабатываете событие Click, тогда тип времени выполнения e будет MouseEventArgs, как Джими уже упоминал в комментариях.
Но в некоторых элементах управления, таких как Button, вы можете вызвать событие Click без фактического щелчка мышью, например, вызвав button1.PerformClick() или когда кнопка является AcceptButton формы, и вы нажимаете Enter, или если вы нажимаете мнемоническую комбинацию клавиш для кнопки или когда кнопка имеет фокус и вы нажимаете Space. В таких случаях типом времени выполнения e является EventArgs.
Если вам интересно щелкнуть мышью и вы хотите получить e как MouseEventArgs, вам следует обработать событие MouseClick.
Например:
picttureBox1.MouseClick += PicttureBox1_MouseClick;
А потом:
private void PicttureBox1_MouseClick(object sender, MouseEventArgs e)
{
}
Привет, спасибо тебе и Джимми. определение переменной как MouseEventArgs сделало работу!
Объект
EventArgs eсобытия Click уже относится к типуMouseEventArgs. Протестируйте это сvar args = e as MouseEventArgs;