PDA

View Full Version : سوال: چطور میشه رنگ حاشیه textbox رو تعیین کرد؟



mmbguide
سه شنبه 17 دی 1392, 21:26 عصر
سلام به همه

چطور میشه رنگ Border مربوط به TextBox و GroupBox را تغییر داد. اگر نیاز به کد نویسی داره و اگه اطلاعاتی دارید بفرمایید چرا همه چیز باید با کدنویسی انجام بشه؟ چرا این موارد در property شیء قرار داده نشده.


ممنون

sagggad
سه شنبه 17 دی 1392, 22:07 عصر
با سلام
رنگ Border منظورتون چی هست؟

mmbguide
سه شنبه 17 دی 1392, 23:11 عصر
منظورم رنگ حاشیه TextBox هستش

زمانی که در برنامه Ms Access فرم ایجاد میکنی و روی آن TextBox قرار میدهید این امکان وجود دارد که برای دورتادور آن یک رنگ انتخاب کنید. میخواستم بدونم در Vb.net چطور میشه

sagggad
سه شنبه 17 دی 1392, 23:35 عصر
بفرمایید این کامپوننت رو براتون نوشتم البته خیلی ساده است:
لینک دانلود:115034
برای تعویض متن یا خصوصیت های دیگر این تکس بکس دقت کن که باید از کد زیر استفاده کنی:

Textrang1.Controls("TextBox1").Text = "Sajjad"
برای تغییر رنگ اطراف تکس باکس هم باید خصوصیت BackColor رو عوض کنی...

gilsoft
چهارشنبه 18 دی 1392, 06:22 صبح
سلام به همه

چطور میشه رنگ Border مربوط به TextBox و GroupBox را تغییر داد. اگر نیاز به کد نویسی داره و اگه اطلاعاتی دارید بفرمایید چرا همه چیز باید با کدنویسی انجام بشه؟ چرا این موارد در property شیء قرار داده نشده.

ممنون

سلام دوست عزیز

اینم اون چیزی که میخواستی :

#Region " - Border Rectangle - "
Private Shared WM_NCPAINT As Integer = &H85
Private Shared WM_ERASEBKGND As Integer = &H14
Private Shared WM_PAINT As Integer = &HF

<DllImport("user32.dll")> _
Private Shared Function GetDC(ByVal hwnd As IntPtr) As IntPtr
End Function

<DllImport("user32.dll")> _
Public Shared Function GetDCEx(ByVal hwnd As IntPtr, ByVal hrgnclip As IntPtr, ByVal fdwOptions As UInt32) As IntPtr
End Function

<DllImport("user32.dll")> _
Public 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)

hDC = GetDC(m.HWnd)

If (hDC <> IntPtr.Zero) Then

Dim Graphics As Graphics = Graphics.FromHdc(hDC)
Dim BorderColor As Color = Color.Orange
Dim Rectangle As Rectangle

Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality
Graphics.SmoothingMode = SmoothingMode.HighQuality

Rectangle = New Rectangle(1, 1, TextBox1.Width - 5, TextBox1.Height - 5)
ControlPaint.DrawBorder(Graphics, Rectangle, BorderColor, ButtonBorderStyle.Solid)

Rectangle = New Rectangle(0, 0, TextBox1.Width - 6, TextBox1.Height - 6)
ControlPaint.DrawBorder(Graphics, Rectangle, BorderColor, ButtonBorderStyle.Solid)

m.Result = CType(1, IntPtr)
ReleaseDC(m.HWnd, hDC)
End If
End If
End Sub
#End Region 'Border Rectangle

موفق باشید ....