- PR -

テキストボックスの入力規則について

1
投稿者投稿内容
バニラミント
ベテラン
会議室デビュー日: 2005/05/27
投稿数: 58
投稿日時: 2005-11-18 16:50
Windowsフォームでデータ入力させるプログラムを書いています。
項目毎に入力規則をつけようと考えています。

はじめに、何もデータが入力されず次の項目へ移ろうと
した際に、警告メッセージを出して、フォーカスを該当項目へ
とばすというのを作ろう思い次のように作ってみました。

まず、項目を格納するプロパティを次のようにしました

Public Property field03() As Object
Get
Return m_field03
End Get
Set(ByVal Value As Object)
If Value = Nothing Then
MessageBox.Show("名前を入力してください")
m_field03 = "-----"
Else
m_field03 = Value
End If
End Set
End Property


実際の処理で次のようにすると

Private Sub TB_field03_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TB_field03.Leave
imp.field03 = TB_field03.Text
End Sub

警告メッセージはでるのですがそれ以外何も書いていないので
フォーカスは次の項目へいってしまいます。

このイベントをキャンセルすればとか考えて調べてみたのですが
そういう方法とかを見つけることができませんでした

次に、考えてみたのは

if imp.field03 = "-----" then
TB_field03へフォーカスを移す命令
end if

というのですが、ヘルプの探し方が悪いのか見つけることができません
どなたかご教示いただけませんでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-18 16:58
エラー検証は検証イベントで行いましょう。
Validating イベントです。

有効でない値が入力された場合は、
イベント引数である CancelEventArgs の Cancel プロパティを true に設定します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
バニラミント
ベテラン
会議室デビュー日: 2005/05/27
投稿数: 58
投稿日時: 2005-11-20 08:10
じゃんぬねっとさん。レスありがとうございました。
遅くなりましたが、ようやく理解できました。
以下のようにしたところ思うとおり実行できました。

Public Property field03() As Object
Get
Return m_field03
End Get
Set(ByVal Value As Object)
If Value = Nothing Then
MessageBox.Show("名称を入力してください")
m_field03 = "-----"
Else
m_field03 = Value
End If
End Set
End Property


Private Sub TB_field03_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TB_field03.Validating
imp.field03 = TB_field03.Text
If imp.field03 = "-----" Then
e.Cancel = True
End If
1

スキルアップ/キャリアアップ(JOB@IT)