PaintEventArgs.ClipRectangle всегда (0,0,0,0) на UserControl - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь написать EventHandler для UserControl, который я написал, но по какой-то причине элемент управления не имеет ClipRectangle:

Private Sub paints(sender As Object, p As PaintEventArgs) Handles Me.Paint
    ControlPaint.DrawBorder(p.Graphics, p.ClipRectangle, SystemColors.AppWorkspace, ButtonBorderStyle.Solid)
End Sub

Когда я пытаюсь добавить MyBase.OnPaint (p), я получаю StackOverflow, потому что по какой-то причине это вызывает бесконечную рекурсию.

Так почему же нет прямоугольника? Схема UserControl выглядит примерно так:

UserControl
- TableLayout
- - TableLayout
- - - Этикетка
- - - Этикетка
- - TextBox

И это должно быть что-то вроде 250x50 пикселей.

1 Ответ

0 голосов

PaintEventArgs.ClipRectangle - это прямоугольник, который нуждается в для рисования. Если в вашем пользовательском контроле нет элементов управления, то это клиентская область. Но если есть другие элементы управления, то он обрезает свою область от клиентского прямоугольника! Возможно, ваши дочерние элементы управления занимают всю клиентскую область, поэтому рисование не нужно, поэтому возвращается (0, 0, 0, 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...