|
分類:[VB.NET/VB2005 以降]
2008/12/05(Fri) 18:33:45 編集(投稿者) 2008/12/05(Fri) 18:30:07 編集(投稿者) 2008/12/05(Fri) 18:30:05 編集(投稿者)
開発環境 : WindowsCe (WindowsXPにてPocketPCを使用) 言語 : VB.NET
現状、テキストボックスの入力制限(Byte数制限)を行う為、 添付の関数をKeyPress時に呼び出しています。
ただし、下記のような操作を行った際、3)にてKeyPressイベントが発生。 その時点ですでに、TextBox.SelectedTextにてExceptionが発生してしまいうまく動作しません。 ※指定された引数は、有効な範囲にありません。
回避方法等ございましたら、ご教授ください。
【操作内容】 1)全角文字を入力 あああ ※この際確定はしない 2)Spaceキーを押下 あああ ※変換対象変更可能な状態 3)Enterを押下せず文字キーを押下 あああ1 ※この時点で'あああ'が確定?
【入力制限関数】 ※テキストボックスのMaxLength以上の場合入力されたテキストを削除
'文字列有効Byte数 Dim dintByteCount As Integer = aItxtTarget.MaxLength
'文字列初期値 Dim dstrText As String = aItxtTarget.Text
'入力文字列レングス Dim dintInputStrLen As Integer = aItxtTarget.SelectionLength - 1
'文字挿入位置 Dim dintDefSelectionStart As Integer = aItxtTarget.SelectionStart
'-------------------------------------------------------------------------------- '■BackSpaceは無視 ※引数変えたくなければ外だし '-------------------------------------------------------------------------------- If (e.KeyChar = Chr(Keys.Back)) Then Return False End If
'-------------------------------------------------------------------------------- '■処理対象のTextがMaxLength以上の間繰り返し '-------------------------------------------------------------------------------- While (mencFileEncoding.GetByteCount(dstrText) > dintByteCount)
'-------------------------------------------------------------------------------- '■入力最後尾より一文字削除 '-------------------------------------------------------------------------------- dstrText = dstrText.Remove(dintDefSelectionStart + (dintInputStrLen), 1) dintInputStrLen -= 1 End While
'-------------------------------------------------------------------------------- '■文字列 / 文字列挿入位置を再設定 '-------------------------------------------------------------------------------- aItxtTarget.Text = dstrText
Return True
|