VB 2008 Express Edition.
Пытаюсь сделать контрол, который добавляет в имеющийся в нем PictureBox сетку (ну и другие элементы оформления, например тень). С сеткой проблем нет, но когда я хочу прицепить к нему PictureBox, прорисовка в котором реализована в другом модуле, сетка накладывается поверх изображения.
MyDocument - контрол, помещяю на форму
- Код: Выделить всё
Public Class MyDocument
Private WithEvents PictureBoxWithGrid As PictureBox
Public Sub New()
AP_PictureBox = New PictureBox
End Sub
Public Property PictureBox() As PictureBox
Get
PictureBox = PictureBoxWithGrid
End Get
Set(ByVal value As PictureBox)
Controls.Remove(PictureBoxWithGrid)
PictureBoxWithGrid = value
Controls.Add(PictureBoxWithGrid)
End Set
End Property
Private Sub PictureBoxWithGrid_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBoxWithGrid.Paint
'здесь я рисую сетку
End Sub
End Class
MyPicture - один из PictureBox, котрый может поместится в MyDocument
- Код: Выделить всё
Class MyPicture
Inherits PictureBox
Private Sub MyPicture_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
'здесь рисую изображение
End Sub
End Class
Вызываю так:
- Код: Выделить всё
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MyPicture1 = New MyPicture
Controls.Add(MyPicture1)'без этого почему-то не реагирует на мышку...
MyDocument1.PictureBox = MyPicture
End Sub
MyPicture_Paint вызывается раньше PictureBoxWithGrid_Paint, и сетка оказывается поверх.
Как можно победить? (Класс MyDocument хочу сделать универсальным на будущее - просто цепляешь к нему производные от PictureBox и появляется сетка и пр.)