dj4400 Ответов: 2

Добавление пользовательского элемента управления picture box в форму


Привет,

Использование C# и VS2010,

Я пытаюсь создать пользовательский элемент управления, который наследуется от PictureBox, давайте назовем его NewPicBox. Я объявил об этом в новом файле под проектом.

Я добавил в конструктор NewPicBox ContextMenuStri,
Должен ли я добавить в конструктор NewPicBox обычный PictureBox, чтобы иметь функциональность PictureBox?

Затем я хочу поместить NewPicBox в форму,

Могу ли я сделать это, как разместить обычный PictureBox, если да, то как? я не могу видеть его на дизайнере? должен ли я делать это динамически, как?


Я также хочу обработать событие нажатия пользователем NewPicBox с помощью мыши.

Чтобы обработать событие мыши, должен ли я объявить MouseUp как новый?
(new protected void MouseUp(object sender, MouseEventArgs e)

Есть ли другой способ справиться с этими событиями?
Спасибо!

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

Создание NewPicBox щелчком правой кнопкой мыши по названию проекта Add->New Item...->Custom Control
и изменение наследования от Control к PictureBox

2 Ответов

Рейтинг:
2

#realJSOP

Производный элемент управления из PictureBox это правильный путь. В этот момент вы можете переопределить любой метод или обработчик событий, который пожелает ваше сердце.


dj4400

Например мне не удалось переопределить MouseMove
(с новым он скомпилирован, но, как я уже упоминал в своем вопросе, я не мог определить, как разместить NewPictureBox в форме)

Ralf Meier

Вы не можете переопределить MouseMove ... но вы можете переопределить метод "OnMouseMove" - каждое событие имеет соответствующий метод On... -. Теперь вы можете делать все, что вам нравится с MouseMove. Если вы не вызываете OnMouseMove из базового класса (в конце), это приводит к тому, что событие не запускается (если хотите).

Рейтинг:
2

OriginalGriff

Как сказал Джон, вывод вашего элемента управления из PictureBox - это правильный путь, но это не так просто, как изменение базового класса из UserControl в PictureBox-это вызовет ошибки, которые, вероятно, остановят дизайнера, работающего с вашим элементом управления.
Видеть здесь: Как наследовать от существующих элементов управления Windows Forms | Microsoft Docs[^] который объясняет шаги, которые вам нужно будет предпринять, и здесь: Настройка элемента управления PictureBox[^] для примера.


dj4400

Спасибо я проверю эти статьи