System.ComponentModel.TypeConverter
با استفاده از این کلاس ، هر آبجکتی رو میتونید بصورت String ذخیره کرده و اونو مجددا بازیابی کنید.
مثال:
ذخیره یک فونت با تمام پراپرتیها در یک متغیر رشته ای:
کد:
Dim Converter As System.ComponentModel.TypeConverter
Converter = System.ComponentModel.TypeDescriptor.GetConverter(GetType(Font))
Dim MyFont As String = Converter.ConvertToString(Me.Font)
فراخوانی فونت ذخیره شده از متغیر رشته ای:
کد:
Me.Font = Converter.ConvertFromString(MyFont)
این عمل رو برای هر آبجکتی که در وی بی دات نت وجود دارد میتوان انجام داد.
Change BorderColor Of Controls
کد:
Public Class NewTxtBox
Inherits TextBox
Private Shared WM_NCPAINT As Integer = &H85
Private Shared WM_ERASEBKGND As Integer = &H14
Private Shared WM_PAINT As Integer = &HF
<Runtime.InteropServices.DllImport("user32.dll")> _
Shared Function GetDCEx(ByVal hwnd As IntPtr, _
ByVal hrgnclip As IntPtr, ByVal fdwOptions As UInt32) As IntPtr
End Function
<Runtime.InteropServices.DllImport("user32.dll")> _
Shared Function ReleaseDC(ByVal hwnd As IntPtr, ByVal hDC As IntPtr) As Integer
End Function
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_NCPAINT Or m.Msg = WM_ERASEBKGND Or m.Msg = WM_PAINT Then
Dim hdc As IntPtr = GetDCEx(m.HWnd, CType(1, IntPtr), 1 Or &H20)
If (hdc <> IntPtr.Zero) Then
Dim graphics As Graphics = Drawing.Graphics.FromHdc(hdc)
Dim borderColor As Color = Color.Red
Dim rectangle As Rectangle = New Rectangle(0, 0, Me.Width, Me.Height)
ControlPaint.DrawBorder(graphics, rectangle, borderColor, _
ButtonBorderStyle.Solid)
m.Result = CType(1, IntPtr)
ReleaseDC(m.HWnd, hdc)
End If
End If
End Sub
End Class