Cool Smith Ответов: 1

Как сделать панель внутри пользовательского элемента управления прокруткой по времени проектирования


Привет,

I место на панели внутри пользовательских элементов управления, задайте его autoscroll в true и причине пользовательского элемента управления.

Когда я помещаю элементы управления внутри панели во время разработки, она автоматически показывает полосу прокрутки, если ее содержимое больше, но я не могу прокрутить ее, так как полоса прокрутки не реагирует на события мыши во время разработки, кроме времени выполнения

Как я могу это исправить?

Спасибо

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

Я создал конструктор и переопределил его функцию GetHitTest, но она все еще не работает

Protected Overrides Function GetHitTest(ByVal point As System.Drawing.Point) As Boolean
         point = Control.PointToClient(point)
         Dim rect As Rectangle = Me.Host.Bounds
         Return rect.Contains(point)


     End Function

Gerry Schmitz

Это "дизайнер", и именно поэтому он называется "время разработки"; он не "работает".

Однако в случае UWP этот конструктор может привязаться к допустимому источнику / коллекции данных во время разработки и отразить их в сетке данных, например, во время "проектирования"; но ему все равно нужны "данные" (чего вы не делаете).

1 Ответов

Рейтинг:
12

Ralf Meier

Вот пример, который показывает, как это должно быть сделано :
&низкотемпературный;

Private HostControl As RMBaseSlider = Nothing

 Public Overrides Sub Initialize(ByVal component As System.ComponentModel.IComponent)
     MyBase.Initialize(component)

     HostControl = DirectCast(component, RMBaseSlider)
 End Sub


 Protected Overrides Function GetHitTest(point As System.Drawing.Point) As Boolean
     If HostControl IsNot Nothing Then
         Dim myPoint As Point
         If HostControl.ShowStepButtons Then
             myPoint = HostControl.ButtonLeft.PointToClient(point)
             If HostControl.ButtonLeft.ClientRectangle.Contains(myPoint) Then Return True
             myPoint = HostControl.ButtonRight.PointToClient(point)
             If HostControl.ButtonRight.ClientRectangle.Contains(myPoint) Then Return True
         End If
         myPoint = HostControl.Slider.PointToClient(point)
         If HostControl.Slider.ClientRectangle.Contains(myPoint) Then Return True
     End If

     Return MyBase.GetHitTest(point)
 End Function


Это фрагмент кода одного из моих конструкторов элементов управления.
Здесь у меня есть слайдер, который содержит 2 кнопки.
GetHitTest доставляет истинное значение ДИЗАЙНЕРУ, Если мышь расположена над одной из этих кнопок ...

Я думаю, это может помочь вам ...