vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Bordercolor verschiedener Controls handeln 
Autor: jasmina
Datum: 15.05.12 10:36

Hallo,
benutze vb.2010
auf einem Formular sind verschieden Controls.
Textboxen,
PictureBox,
RichTextBox,
ComboBox,
NumericUpDown,
Label und
eigenes erstellte Comboboxen (f. 2 Spalten).

Nun möchte ich bei bestimmten Situationen einen roten Rahmen (Bordercolor) um die einzelnen Elemente legen können.

Ich habe nun eine Methode um bei den eigens erstellten Comboboxen mittels
einer Überschreibung der 'WndProc'-Methode.
Über die 'Override WndProc-Methode' abfangen des 'WM_PAINT's.

Es funktioniert zwar bei den eigenen erstellten Comboboxen, da ich dort die NEW Methode selbst erstelle,
aber wie kann ich für alle die obig genannten Controls bei bestimmten Situationen die 'WndProc'-Methode nutzen.

Wie kann ich einem speziellen Control jetzt im Programm mitteilen, dass es diese Methode nutzen soll und wie? control.Invalidate?
Aber wie kann ich dann im Paint diese Methode aufrufen?
Protected Overrides Sub WndProc (ByRef m As Message)
Wie erreiche ich die Übergabe von m? bezw. g As Graphics des Controls.


Imports System.Windows.Forms
Imports System.Drawing
Imports System.Runtime.InteropServices
 
Public Class FlatComboBox
	Inherits ComboBox
	Public Const WM_PAINT As Integer = &Hf
	<DllImport("user32")> _
	Public Shared Function GetWindowDC(hWnd As IntPtr) As IntPtr
	End Function
 
	<DllImport("user32")> _
	Public Shared Function ReleaseDC(hWnd As IntPtr, hDC As IntPtr) As Integer
	End Function
	Public Sub New()
		MyBase.New()
		Me.SetStyle(ControlStyles.DoubleBuffer, True)
		Me.IntegralHeight = False
		Me.DropDownStyle = ComboBoxStyle.Simple
	End Sub
 
	Protected Overrides Sub WndProc(ByRef m As Message)
		Dim hDC As IntPtr = IntPtr.Zero
		Dim gdc As Graphics = Nothing
		Select Case m.Msg
			Case WM_PAINT
				MyBase.WndProc(m)
				hDC = GetWindowDC(Me.Handle)
				gdc = Graphics.FromHdc(hDC)
				PaintFlatControlBorder(Me, gdc)
				ReleaseDC(m.HWnd, hDC)
				gdc.Dispose()
 
				Exit Select
			Case Else
				MyBase.WndProc(m)
				Exit Select
		End Select
	End Sub
	Private Sub PaintFlatControlBorder(ctrl As Control, g As Graphics)
		Dim rect1 As New Rectangle(0, 0, ctrl.Width, 20)
		Dim rect2 As New Rectangle(0, 21, ctrl.Width, ctrl.Height - 21)
 
		ControlPaint.DrawBorder(g, rect1, Color.Black, ButtonBorderStyle.Solid)
		ControlPaint.DrawBorder(g, rect2, Color.Black, ButtonBorderStyle.Solid)
	End Sub
End Class
Danke
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bordercolor verschiedener Controls handeln3.303jasmina15.05.12 10:36
Re: Bordercolor verschiedener Controls handeln2.688Manfred X15.05.12 11:49
Für das Drumherum2.683Manfred X15.05.12 12:26
Re: Bordercolor verschiedener Controls handeln2.646jasmina15.05.12 16:04
Re: Bordercolor verschiedener Controls handeln2.666jasmina15.05.12 18:33
Re: Bordercolor verschiedener Controls handeln2.650keco15.05.12 18:55
Re: Bordercolor verschiedener Controls handeln2.684Manfred X15.05.12 19:00
Re: Bordercolor verschiedener Controls handeln2.626jasmina16.05.12 13:57

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel