hi
can help me?
I find projects in How to write a HatchStyle Dropdown - CodeProject
I modify it to be like this:
I modify because I wanted to throw 3 hatchstyle (max, min, largegrid)
but after the program is run, the items that appear out 2 times. I want to only appear once. is something wrong with the source code?
actual project of How to write a HatchStyle Dropdown - CodeProject if executed also appeared two times ( hatchstyle) in dropdwon, if it can only appear once?
please help me due to my college thesis. thanks
can help me?
I find projects in How to write a HatchStyle Dropdown - CodeProject
I modify it to be like this:
Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms Public Class ClassCustomDropBox Inherits ComboBox Public Sub New() MyBase.New() ' ' TODO: Add constructor logic here ' Me.DrawMode = DrawMode.OwnerDrawVariable ' Me.SetStyle(ControlStyles.DoubleBuffer, True) Me.InitializeDropDown() End Sub Protected Overrides Sub Finalize() Try MyBase.Dispose() Me.Dispose(True) Finally MyBase.Finalize() End Try End Sub Public Enum hatchType Horizontal Vertical ForwardDiagonal BackwardDiagonal Cross DiagonalCross Percent05 Percent10 Percent20 Percent25 Percent30 Percent40 Percent50 Percent60 Percent70 Percent75 Percent80 Percent90 LightDownwardDiagonal LightUpwardDiagonal DarkDownwardDiagonal DarkUpwardDiagonal WideDownwardDiagonal WideUpwardDiagonal LightVertical LightHorizontal NarrowVertical NarrowHorizontal DarkHorizontal DarkVertical DashedDownwardDiagonal DashedUpwardDiagonal DashedVertical DashedHorizontal SmallConfetti LargeConfetti Zigzag Wave DiagonalBrick HorizontalBrick Weave Plaid Divot DottedGrid DottedDiamond Shingle Trellis Sphere SmallGrid SmallCheckerBoard LargeCheckerBoard OutlinedDiamond SolidDiamond End Enum Protected Sub InitializeDropDown() ' Me.MaximumSize = 52 Dim hatch As Type = GetType(hatchType) For Each styleName As String In [Enum].GetNames(hatch) Me.Items.Add(styleName) 'If Not Me.Items.Contains(styleName) Then ' Me.Items.Add(styleName) 'End If Next End Sub Private hatch As hatchType Public Property ddHatch() As hatchType Get Return Me.hatch End Get Set(value As hatchType) Me.hatch = value Me.Refresh() End Set End Property Protected Overrides Sub OnDrawItem(e As System.Windows.Forms.DrawItemEventArgs) ' The following method should generally be called before drawing. ' It is actually superfluous here, since the subsequent drawing ' will completely cover the area of interest. e.DrawBackground() 'The system provides the context 'into which the owner custom-draws the required graphics. 'The context into which to draw is e.graphics. 'The index of the item to be painted is e.Index. 'The painting should be done into the area described by e.Bounds. 'Dim displayText As String = Me.Items(e.Index).ToString() 'Dim hs As HatchStyle = CType([Enum].Parse(GetType(HatchStyle), displayText, ignoreCase:=True), HatchStyle) If e.Index <> -1 Then Dim g As Graphics = e.Graphics Dim r As Rectangle = e.Bounds Dim rd As Rectangle = r rd.Width = rd.Left + 25 Dim rt As Rectangle = r r.X = rd.Right Dim displayText As String = Me.Items(e.Index).ToString() ' TODO add user selected foreground and background colors here 'Try Dim hs As HatchStyle = CType([Enum].Parse(GetType(HatchStyle), displayText, ignoreCase:=True), HatchStyle) Dim b As New HatchBrush(hs, Color.Black, e.BackColor) g.DrawRectangle(New Pen(Color.Black, 2), rd.X + 3, rd.Y + 2, rd.Width - 4, rd.Height - 4) g.FillRectangle(b, New Rectangle(rd.X + 3, rd.Y + 2, rd.Width - 4, rd.Height - 4)) 'Catch ex As Exception ' Dim hs As HatchStyle = CType([Enum].Parse(GetType(HatchStyle), displayText, ignoreCase:=True), HatchStyle) 'End Try Dim sf As New StringFormat() sf.Alignment = StringAlignment.Near 'If the current item has focus. If (e.State And DrawItemState.Focus) = 0 Then e.Graphics.FillRectangle(New SolidBrush(SystemColors.Window), r) e.Graphics.DrawString(displayText, Me.Font, New SolidBrush(SystemColors.WindowText), r, sf) Else e.Graphics.FillRectangle(New SolidBrush(SystemColors.Highlight), r) e.Graphics.DrawString(displayText, Me.Font, New SolidBrush(SystemColors.HighlightText), r, sf) End If End If 'Draws a focus rectangle on the specified graphics surface and within the specified bounds. e.DrawFocusRectangle() End Sub Protected Overrides Sub OnMeasureItem(e As System.Windows.Forms.MeasureItemEventArgs) 'Work out what the text will be Dim displayText As String = Me.Items(e.Index).ToString() 'Get width & height of string Dim stringSize As SizeF = e.Graphics.MeasureString(displayText, Me.Font) 'Account for top margin stringSize.Height += 5 ' set hight to text height e.ItemHeight = CInt(stringSize.Height) ' set width to text width e.ItemWidth = CInt(stringSize.Width) End Sub End Class
I modify because I wanted to throw 3 hatchstyle (max, min, largegrid)
but after the program is run, the items that appear out 2 times. I want to only appear once. is something wrong with the source code?
actual project of How to write a HatchStyle Dropdown - CodeProject if executed also appeared two times ( hatchstyle) in dropdwon, if it can only appear once?
please help me due to my college thesis. thanks
Last edited by a moderator: