Сетка в контроле

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Сетка в контроле

Сообщение Alec » 24.05.2009 (Вс) 14:50

Приветствую всех!
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 и появляется сетка и пр.)
Иногда лучше вовремя остановиться...
И начать заново!

Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64

    TopList