Updated the code to include Nick's suggestion, also created a UnitCharChanged event too.
vb Code:
Imports System.ComponentModel
<ToolboxBitmap(GetType(NumericUpDown))>
Public Class UnitNUD
Inherits System.Windows.Forms.NumericUpDown
Public Event UnitCharChanged As EventHandler
Private m_UnitChar As String = String.Empty
Public Sub New()
MyBase.New()
m_UnitChar = """"c
End Sub
<Category("Appearance"), DefaultValue(""""c)>
Public Property UnitChar As String
Get
Return m_UnitChar
End Get
Set(ByVal value As String)
If m_UnitChar <> value Then
m_UnitChar = value
Me.ValidateEditText()
Call OnUnitCharChanged(EventArgs.Empty)
End If
End Set
End Property
Protected Overrides Sub UpdateEditText()
Me.Text = Me.Value.ToString() & m_UnitChar
End Sub
Protected Overrides Sub OnValidating(ByVal e As CancelEventArgs)
If Not (Me.ChangingText) Then
If (Me.Text.Trim().EndsWith(m_UnitChar)) Then
Me.Text = Me.Text.Substring(0, Me.Text.LastIndexOf(m_UnitChar))
End If
End If
End Sub
Protected Sub OnUnitCharChanged(ByVal e As EventArgs)
RaiseEvent UnitCharChanged(Me, e)
End Sub
'Protected Overrides Sub ValidateEditText()
' Me.Text = Me.Text.Replace(m_UnitChar, String.Empty)
' MyBase.ValidateEditText()
'End Sub
End Class