Чтобы сделать переход по форме, вам нужно P / Invoke несколько функций из Windows API и установить расширенные стили окна формы .Я произвольно решил представить пример кода в VB.NET.Если это не ваше предпочтение, его легко конвертировать в C #.
Начните с функции GetWindowLong
, которую вы будете использовать для получения расширенных стилей окна.
Public Const GWL_EXSTYLE As Integer = -20
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function GetWindowLong(ByVal hWnd As IntPtr, _
ByVal nIndex As Integer) As Integer
End Function
Вам также понадобится сестринская функция SetWindowLong
, чтобы указать дополнительные расширенные стили окна.
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, _
ByVal nIndex As Integer, _
ByVal dsNewLong As Integer) As Integer
End Function
И константа для расширенного стиля окна, которая потребуется длябыть установленным:
Public Const WS_EX_TRANSPARENT As Integer = &H20
И теперь, чтобы использовать все это, вы можете переопределить OnLoad
метод вашей формы и добавить следующие строки:
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
''# Call the base class implementation
MyBase.OnLoad(e)
''# Grab the current extended style information for this form
Dim initialStyles As Integer = GetWindowLong(Me.Handle, GWL_EXSTYLE)
''# Add the transparent extended window style
Dim newStyles As Integer = initialStyles Or WS_EX_TRANSPARENT
''# Update the form's extended window styles
SetWindowLong(Me.Handle, GWL_EXSTYLE, newStyles)
End Sub
Конечно, обратите внимание, что теперь пользователь не сможет взаимодействовать с элементами вашей формы, а чрезвычайно будет трудно закрыть его.Тщательно продумайте, действительно ли это то, что вы хотите сделать.