開発用 TextBox のサンプル


  仕様





1) 通常使わないプロパティは、デザイナに表示させない

2) クラス共通のプロパティを設定すると、validate が発生しない

3) DataType プロパティを実装する
     (0) : なにもしない
     (1) : 9999/99/99
     (2) : 先行ゼロ( MaxLength で桁数、デフォルトは4 )

4) DataTypeによって、以下のコントロールを行う
  • 入力の制限を行う
  • フォーカスを失った時に表示用編集を行う
  • フォーカスを得た時に編集用文字列を取り去る( 日付型のみ )
  • デフォルトの validate チェックを行う( 日付型のみ )
5) AllowChar プロパティを実装する
     指定された文字列に含まれる1つ1つの文字以外入力できなくなる

6) CheckType プロパティを実装する
     (0) : なにもしない
     (1) : 必須入力

7) CheckValue プロパティを実装する
     カンマ区切りで指定された各文字列以外は入力エラーメッセージを表示( validate )


3) 4) は、サンプルとして、YYYY/MM/DD 編集の YYYYMMDD 入力の日付型を簡易的に実装しています。
※ 日付選択のコントロールを使えば良いので、このような制御を最近はしないかもしれませんが、
※ 和暦表示や、キーボード入力を主とするシステムでは有効かもしれません。

LboxText.validateNone = True

として実行すると、validate 処理が発生しないので、キャンセル処理等に使用すると良いと思います


  コード




LboxText.vb
  

Imports System.Windows.Forms

Public Class LboxText

	Public Shared validateNone As Boolean = False

	' ****************************************************** 
	' validate コントロール用
	' ****************************************************** 
	Protected Overloads Overrides Sub OnValidating( _
	  ByVal e As System.ComponentModel.CancelEventArgs)

		' ****************************************************** 
		' validateNone が True ならば、Valdating は発生しない 
		' ****************************************************** 
		If Not validateNone Then
			MyBase.OnValidating(e)
		End If

	End Sub

	Protected Overloads Overrides Sub OnValidated( _
	 ByVal e As System.EventArgs)

		' ****************************************************** 
		' validateNone が True ならば、Validated は発生しない 
		' ****************************************************** 
		If Not validateNone Then
			MyBase.OnValidated(e)
		End If

	End Sub

	' ****************************************************** 
	' カスタムデータ型
	' ****************************************************** 
	Private _DataType As Integer = 0
	<System.ComponentModel.Description( _
	"0:文字列" & Chr(10) & _
	"1:YYYY/MM/DD" & Chr(10) & _
	"2:先行ゼロ文字列(長さはMaxLengthで指定)" _
	), _
	 System.ComponentModel.DefaultValue(0)> _
	  Public Property DataType() As Integer
		Get
			Return _DataType
		End Get
		Set(ByVal value As Integer)
			_DataType = value
		End Set
	End Property

	' ****************************************************** 
	' カスタムチェックタイプ
	' ****************************************************** 
	Private _CheckType As Integer = 0
	<System.ComponentModel.Description("0:なし" & Chr(10) & "1:必須入力"), _
	 System.ComponentModel.DefaultValue(0)> _
	Public Property CheckType() As Integer
		Get
			Return _CheckType
		End Get
		Set(ByVal value As Integer)
			_CheckType = value
		End Set
	End Property

	' ****************************************************** 
	' 編集文字列を省く 
	' ****************************************************** 
	Private Sub LboxText_Enter(ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles MyBase.Enter

		If Me._DataType = 1 Then
			Me.MaxLength = 8
			Dim str As String = Me.Text
			str = str.Replace("/", "")
			Me.Text = str
		End If

	End Sub

	' ****************************************************** 
	' 編集する 
	' ****************************************************** 
	Private Sub LboxText_Leave(ByVal sender As System.Object, _
	 ByVal e As System.EventArgs) Handles MyBase.Leave

		If Me._DataType = 1 Then
			If Me.Text <> "" Then
				Dim str As String = _
				 Integer.Parse(Me.Text).ToString("0000/00/00")
				Me.Text = str
			End If
		End If

		If Me._DataType = 2 Then
			If Me.Text <> "" Then
				If Me.MaxLength > 1000 Then
					Me.MaxLength = 4
				End If
				Dim formatString = ""
				For i As Integer = 1 To Me.MaxLength
					formatString += "0"
				Next
				Dim str As String = _
				 Integer.Parse(Me.Text).ToString(formatString)
				Me.Text = str
			End If
		End If

	End Sub

	' ****************************************************** 
	' カスタム入力制限
	' ****************************************************** 
	Private _AllowChar As String = ""
	<System.ComponentModel.Description("セットした文字列のみ入力可能とする"), _
	 System.ComponentModel.DefaultValue("")> _
	Public Property AllowChar() As String
		Get
			Return _AllowChar
		End Get
		Set(ByVal value As String)
			_AllowChar = value
		End Set
	End Property

	' ****************************************************** 
	' カスタム入力文字列値チェック
	' ****************************************************** 
	Private _CheckValue As String = ""
	<System.ComponentModel.Description("カンマで区切られたそれぞれの文字列以外入力不可とする"), _
	 System.ComponentModel.DefaultValue("")> _
	Public Property CheckValue() As String
		Get
			Return _CheckValue
		End Get
		Set(ByVal value As String)
			_CheckValue = value
		End Set
	End Property

	' ****************************************************** 
	' 対象文字列以外は入力不可にする
	' ****************************************************** 
	Private Sub LboxText_KeyPress(ByVal sender As System.Object, _
	ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

		If Me._DataType = 1 Or Me._DataType = 2 Then
			If (ControlChars.Back + _
			 "0123456789").IndexOf(e.KeyChar.ToString()) < 0 Then
				e.Handled = True
			Else
				Return
			End If
		End If

		If Me._AllowChar <> "" Then
			If (ControlChars.Back + _
			 Me._AllowChar).IndexOf(e.KeyChar.ToString()) < 0 Then
				e.Handled = True
			End If
		End If

	End Sub

	' ****************************************************** 
	' 全体のチェック
	' ****************************************************** 
	Private Sub LboxText_Validating(ByVal sender As System.Object, _
	ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Validating

		If Me._CheckType = 1 Then
			If (Me.Text).Trim() = "" Then
				Me.Text = ""
			End If
			If Me.Text = "" Then
				MessageBox.Show("必須入力です   ", _
				"エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
				e.Cancel = True
			End If
		End If

		If Me._DataType = 1 Then
			If Me.Text <> "" Then
				Try
					Dim dt As Date = Date.Parse(Me.Text)
				Catch ex As Exception
					MessageBox.Show("日付を正しく入力して下さい   ", _
				   "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
					Me.SelectAll()
					e.Cancel = True
				End Try
			End If
		End If

		If Me.Text <> "" And Me._CheckValue <> "" Then
			Dim delimStr As String = ","
			Dim delimiter As Char() = delimStr.ToCharArray()
			Dim split As String() = Me._CheckValue.Split(delimiter)
			Dim strValue As String
			Dim flg As Boolean = False

			For Each strValue In split
				If Me.Text = strValue Then
					flg = True
				End If
			Next
			If Not flg Then
				MessageBox.Show("入力された値は正しくありません   ", _
				"エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
				Me.SelectAll()
				e.Cancel = True
			End If

		End If

	End Sub

End Class
  


LboxTextProp.vb
  

Imports System.Windows.Forms
Imports System.ComponentModel
Imports System.Drawing

Partial Class LboxText

	' ****************************************************** 
	' 背景色 
	' ****************************************************** 
	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property BackColor() As Color
		Get
			Return MyBase.BackColor
		End Get
		Set(ByVal value As Color)
			MyBase.BackColor = value
		End Set
	End Property

	' ****************************************************** 
	' フォント 
	' ****************************************************** 
	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property Font() As Font
		Get
			Return MyBase.Font
		End Get
		Set(ByVal value As Font)
			MyBase.Font = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property AllowDrop() As Boolean
		Get
			Return MyBase.AllowDrop
		End Get
		Set(ByVal value As Boolean)
			MyBase.AllowDrop = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property Anchor() As AnchorStyles
		Get
			Return MyBase.Anchor
		End Get
		Set(ByVal value As AnchorStyles)
			MyBase.Anchor = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property AutoScrollOffset() As Point
		Get
			Return MyBase.AutoScrollOffset
		End Get
		Set(ByVal value As Point)
			MyBase.AutoScrollOffset = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property AutoSize() As Boolean
		Get
			Return MyBase.AutoSize
		End Get
		Set(ByVal value As Boolean)
			MyBase.AutoSize = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property BackgroundImage() As Image
		Get
			Return MyBase.BackgroundImage
		End Get
		Set(ByVal value As Image)
			MyBase.BackgroundImage = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property BackgroundImageLayout() As ImageLayout
		Get
			Return MyBase.BackgroundImageLayout
		End Get
		Set(ByVal value As ImageLayout)
			MyBase.BackgroundImageLayout = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property BindingContext() As BindingContext
		Get
			Return MyBase.BindingContext
		End Get
		Set(ByVal value As BindingContext)
			MyBase.BindingContext = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Protected Overloads Overrides ReadOnly Property CanRaiseEvents() As Boolean
		Get
			Return MyBase.CanRaiseEvents
		End Get
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property ContextMenu() As ContextMenu
		Get
			Return MyBase.ContextMenu
		End Get
		Set(ByVal value As ContextMenu)
			MyBase.ContextMenu = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property ContextMenuStrip() As ContextMenuStrip
		Get
			Return MyBase.ContextMenuStrip
		End Get
		Set(ByVal value As ContextMenuStrip)
			MyBase.ContextMenuStrip = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
		Get
			Return MyBase.CreateParams
		End Get
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property Cursor() As Cursor
		Get
			Return MyBase.Cursor
		End Get
		Set(ByVal value As Cursor)
			MyBase.Cursor = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Protected Overloads Overrides Property DoubleBuffered() As Boolean
		Get
			Return MyBase.DoubleBuffered
		End Get
		Set(ByVal value As Boolean)
			MyBase.DoubleBuffered = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property Dock() As DockStyle
		Get
			Return MyBase.Dock
		End Get
		Set(ByVal value As DockStyle)
			MyBase.Dock = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property ForeColor() As Color
		Get
			Return MyBase.ForeColor
		End Get
		Set(ByVal value As Color)
			MyBase.ForeColor = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property MaximumSize() As Size
		Get
			Return MyBase.MaximumSize
		End Get
		Set(ByVal value As Size)
			MyBase.MaximumSize = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property Site() As ISite
		Get
			Return MyBase.Site
		End Get
		Set(ByVal value As ISite)
			MyBase.Site = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property ShortcutsEnabled() As Boolean
		Get
			Return MyBase.ShortcutsEnabled
		End Get
		Set(ByVal value As Boolean)
			MyBase.ShortcutsEnabled = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property SelectionLength() As Integer
		Get
			Return MyBase.SelectionLength
		End Get
		Set(ByVal value As Integer)
			MyBase.SelectionLength = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property SelectedText() As String
		Get
			Return MyBase.SelectedText
		End Get
		Set(ByVal value As String)
			MyBase.SelectedText = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property Multiline() As Boolean
		Get
			Return MyBase.Multiline
		End Get
		Set(ByVal value As Boolean)
			MyBase.Multiline = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property RightToLeft() As RightToLeft
		Get
			Return MyBase.RightToLeft
		End Get
		Set(ByVal value As RightToLeft)
			MyBase.RightToLeft = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Overloads Overrides Property MinimumSize() As Size
		Get
			Return MyBase.MinimumSize
		End Get
		Set(ByVal value As Size)
			MyBase.MinimumSize = value
		End Set
	End Property


	' ****************************************************** 
	' Shadows Property 
	' ****************************************************** 
	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property AutoCompleteMode() As AutoCompleteMode
		Get
			Return MyBase.AutoCompleteMode
		End Get
		Set(ByVal value As AutoCompleteMode)
			MyBase.AutoCompleteMode = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property AutoCompleteSource() As AutoCompleteSource
		Get
			Return MyBase.AutoCompleteSource
		End Get
		Set(ByVal value As AutoCompleteSource)
			MyBase.AutoCompleteSource = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property AutoCompleteCustomSource() As AutoCompleteStringCollection
		Get
			Return MyBase.AutoCompleteCustomSource
		End Get
		Set(ByVal value As AutoCompleteStringCollection)
			MyBase.AutoCompleteCustomSource = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property TabStop() As Boolean
		Get
			Return MyBase.TabStop
		End Get
		Set(ByVal value As Boolean)
			MyBase.TabStop = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property Margin() As Padding
		Get
			Return MyBase.Margin
		End Get
		Set(ByVal value As Padding)
			MyBase.Margin = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property UseSystemPasswordChar() As Boolean
		Get
			Return MyBase.UseSystemPasswordChar
		End Get
		Set(ByVal value As Boolean)
			MyBase.UseSystemPasswordChar = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property WordWrap() As Boolean
		Get
			Return MyBase.WordWrap
		End Get
		Set(ByVal value As Boolean)
			MyBase.WordWrap = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property UseWaitCursor() As Boolean
		Get
			Return MyBase.UseWaitCursor
		End Get
		Set(ByVal value As Boolean)
			MyBase.UseWaitCursor = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property ScrollBars() As ScrollBars
		Get
			Return MyBase.ScrollBars
		End Get
		Set(ByVal value As ScrollBars)
			MyBase.ScrollBars = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property Lines() As String()
		Get
			Return MyBase.Lines
		End Get
		Set(ByVal value As String())
			MyBase.Lines = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property HideSelection() As Boolean
		Get
			Return MyBase.HideSelection
		End Get
		Set(ByVal value As Boolean)
			MyBase.HideSelection = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property CharacterCasing() As CharacterCasing
		Get
			Return MyBase.CharacterCasing
		End Get
		Set(ByVal value As CharacterCasing)
			MyBase.CharacterCasing = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows ReadOnly Property DataBindings() As ControlBindingsCollection
		Get
			Return MyBase.DataBindings
		End Get
	End Property


	' ****************************************************** 
	' 外側罫線
	' ****************************************************** 
	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property BorderStyle() As BorderStyle
		Get
			Return MyBase.BorderStyle
		End Get
		Set(ByVal value As BorderStyle)
			MyBase.BorderStyle = value
		End Set
	End Property

	' ****************************************************** 
	' ユーザー補助 
	' ****************************************************** 
	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property AccessibleDescription() As String
		Get
			Return MyBase.AccessibleDescription
		End Get
		Set(ByVal value As String)
			MyBase.AccessibleDescription = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property AccessibleName() As String
		Get
			Return MyBase.AccessibleName
		End Get
		Set(ByVal value As String)
			MyBase.AccessibleName = value
		End Set
	End Property

	<System.ComponentModel.Browsable(False)> _
	Public Shadows Property AccessibleRole() As AccessibleRole
		Get
			Return MyBase.AccessibleRole
		End Get
		Set(ByVal value As AccessibleRole)
			MyBase.AccessibleRole = value
		End Set
	End Property

End Class
  

  LboxText.Designer.vb

  

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class LboxText
	Inherits System.Windows.Forms.TextBox

	'UserControl はコンポーネント一覧をクリーンアップするために dispose をオーバーライドします。
	<System.Diagnostics.DebuggerNonUserCode()> _
	Protected Overrides Sub Dispose(ByVal disposing As Boolean)
		If disposing AndAlso components IsNot Nothing Then
			components.Dispose()
		End If
		MyBase.Dispose(disposing)
	End Sub

	'Windows フォーム デザイナで必要です。
	Private components As System.ComponentModel.IContainer

	'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。
	'Windows フォーム デザイナを使用して変更できます。  
	'コード エディタを使って変更しないでください。
	<System.Diagnostics.DebuggerStepThrough()> _
	Private Sub InitializeComponent()
		components = New System.ComponentModel.Container()
	End Sub

End Class
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[dnettool]
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
24/04/19 18:30:01
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube