Files
2020-07-09 00:52:56 +09:00

239 lines
6.9 KiB
VB.net

Imports System.Drawing
Public Class MyTextBox
Enum Inputtype
전부 = 1
숫자 = 2
문자 = 3
소문자 = 5
대문자 = 6
숫자대문자 = 7
숫자소문자 = 8
End Enum
Dim ColName As String
Dim Coltype As OleDbType = OleDbType.VarChar
Dim Ditem As Boolean
Dim Prompt As String
Dim WhereState As String = vbNullString
Dim NotNull As Boolean = False
Dim iNTYPE As Inputtype = Inputtype.전부
Dim DEF_VALUE As String = Me.Text
Protected Var_ViewColNumber As Short
Protected Var_BaseLabel As Label
Public Sub New()
' 이 호출은 디자이너에 필요합니다.
InitializeComponent()
' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오.
End Sub
<System.ComponentModel.Description("이 컨트롤과 연결된 문자를 나타낼 레이블을 선택합니다")> _
Public Property DB_BaseLabel() As Label
Get
Return Var_BaseLabel
End Get
Set(ByVal value As Label)
'//데이터가 들어오면 현재의 프롬프트를 갱신합니다.
Var_BaseLabel = value
Me.DB_Prompt = Prompt
End Set
End Property
<System.ComponentModel.Description("입력되는 값을 필터링합니다")> _
Public Property WHERE_DEFAULT_VALUE() As String
Get
Return DEF_VALUE
End Get
Set(ByVal value As String)
DEF_VALUE = value
End Set
End Property
<System.ComponentModel.Description("입력되는 값을 필터링합니다")> _
Public Property Input_type() As Inputtype
Get
Return iNTYPE
End Get
Set(ByVal value As Inputtype)
iNTYPE = value
End Set
End Property
<System.ComponentModel.Description("반드시입력되어야 할 값입니까?")> _
Public Property DB_NotNull() As Boolean
Get
Return NotNull
End Get
Set(ByVal value As Boolean)
NotNull = value
End Set
End Property
<System.ComponentModel.Description("검색그룹에 있을시 WHere 절")> _
Public Property DB_WhereType() As String
Get
Return WhereState
End Get
Set(ByVal value As String)
WhereState = value
End Set
End Property
<System.ComponentModel.Description("컬럼의 설명")> _
Public Property DB_Prompt() As String
Get
Return IIf(Prompt Is vbNullString, DB_ColName, Prompt)
End Get
Set(ByVal value As String)
'//프롬프트가 바뀔때 연결된 레이블이 잇으면 텍스트를 바꿔준다.
Prompt = value
Try
If Not DB_BaseLabel Is Nothing Then
Me.DB_BaseLabel.Text = value '& "(&" & Var_ViewColNumber & ")"
End If
Catch ex As Exception
End Try
End Set
End Property
<System.ComponentModel.Description("바인딩될 데이터베이스 컬럼명")> _
Public Property DB_ColName() As String
Get
If ColName = "" Then
Return Me.Name
Else
Return ColName
End If
End Get
Set(ByVal value As String)
ColName = value
End Set
End Property
<System.ComponentModel.Description("연결될 데이터베이스 데이터형식")> _
Public Property DB_Type() As OleDbType
Get
Return Coltype
End Get
Set(ByVal value As OleDbType)
Coltype = value
End Set
End Property
<System.ComponentModel.Description("데이터베이스와 연결될 아이템인가?")> _
Public Property DB_ITEM() As Boolean
Get
Return Ditem
End Get
Set(ByVal value As Boolean)
Ditem = value
End Set
End Property
<System.ComponentModel.Description("현재 값을 설정하거나 가져옵니다")> _
Public Property Value() As String
Get
If Me.DB_Type = OleDbType.Numeric AndAlso Me.Text.Trim = "" Then
Return 0
End If
Return Me.Text
End Get
Set(ByVal value As String)
If value.ToUpper = "$$DATE$$" Then
Me.Text = Format(Now, "yyyyMMdd")
Else
Me.Text = value
End If
End Set
End Property
Private Sub TextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs)
If Me.Text.Length > 0 Then
Me.SelectAll()
End If
End Sub
Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
Select Case iNTYPE
Case Inputtype.대문자
If Char.IsNumber(e.KeyChar) Then
e.Handled = True
Else
e.KeyChar = Char.ToUpper(e.KeyChar.ToString)
End If
'If Not Char.IsUpper(e.KeyChar.ToString) Then e.Handled = True
Case Inputtype.문자
If Char.IsNumber(e.KeyChar) Then e.Handled = True
' If Not Char.IsLetter(e.KeyChar.ToString) Then e.Handled = True
Case Inputtype.소문자
If Char.IsNumber(e.KeyChar) Then
e.Handled = True
Else
e.KeyChar = Char.ToLower(e.KeyChar.ToString)
End If
'If Not Char.IsLower(e.KeyChar.ToString) Then e.Handled = True
Case Inputtype.숫자
If Char.IsLetter(e.KeyChar) Then e.Handled = True
Case Inputtype.숫자대문자
e.KeyChar = Char.ToUpper(e.KeyChar.ToString)
Case Inputtype.숫자소문자
e.KeyChar = Char.ToLower(e.KeyChar.ToString)
End Select
End Sub
Private Sub TextBox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyCode = Keys.Enter OrElse e.KeyCode = Keys.Down Then SendKeys.Send("{TAB}")
'If e.KeyCode = Keys.Right AndAlso Me.SelectionStart = Me.Text.Length Then '//오른쪽버튼일경우에는 현재커서위치가 마지막인상태에서 눌럿을때이다.
'SendKeys.Send("{TAB}")
'End If
If (e.Shift AndAlso e.KeyCode = Keys.Enter) OrElse e.KeyCode = Keys.Up Then
SendKeys.Send("+{TAB}")
End If
'If e.KeyCode = Keys.Left AndAlso Me.Text.Length <= 0 Then
' SendKeys.Send("+{TAB}")
' End If
'If e.KeyCode = Keys.Left AndAlso Me.SelectionStart = 0 Then
' SendKeys.Send("+{TAB}")
' End If
End Sub
Private Sub TextBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Me.BackColor = IIf(Me.ReadOnly, Color.Gray, Color.White)
If Me.NotNull = True AndAlso Me.Text = "" Then
Me.ErrorProvider1.SetError(Me, "이 필드는 반드시 입력되어야합니다")
Me.BackColor = Color.Tomato
Else
Me.ErrorProvider1.Clear()
Me.BackColor = IIf(Me.ReadOnly, Color.Gray, Color.White)
'Me.BackColor = Color.White
End If
End Sub
End Class