TextBox(ImeMode=Hiragana)のLeaveイベントにて入力済みの漢字が消失
- 題名: TextBox(ImeMode=Hiragana)のLeaveイベントにて入力済みの漢字が消失
- 著者: h.hayashi
- 日時: 2011/06/29 10:30:05
- ID: 28715
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: TextBox(ImeMode=Hiragana)のLeaveイベントにて入力済みの漢字が消失
- 著者: shu
- 日時: 2011/06/29 11:23:47
- ID: 28716
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: TextBox(ImeMode=Hiragana)のLeaveイベントにて入力済みの漢字が消失
- 著者: h.hayashi
- 日時: 2011/06/29 12:02:47
- ID: 28717
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: TextBox(ImeMode=Hiragana)のLeaveイベントにて入力済みの漢字が消失
- 著者: h.hayashi
- 日時: 2011/07/04 13:20:47
- ID: 28725
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: TextBox(ImeMode=Hiragana)のLeaveイベントにて入力済みの漢字が消失
- 著者: h.hayashi
- 日時: 2011/07/08 13:55:25
- ID: 28742
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: TextBox(ImeMode=Hiragana)のLeaveイベントにて入力済みの漢字が消失
- 著者: h.hayashi
- 日時: 2011/07/11 16:23:12
- ID: 28760
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: 【注意】解決していないのに解決済みにしないでください
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2011/07/12 4:29:58
- ID: 28761
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
【解決したい問題】
ImeMode=Hiraganaに設定したTextBox1からフォーカスが離れると
TextBox1にて入力済みのTextの文字のうち
左端から1文字目ないし2文字目のみ残り
そこより右側が消えてしまいます。
これが消えないように修正したいです。
例)
TextBox1にて カナ入力で オオタと入力し
スペースキーで 大田 と確定後
キーボードの↓キー、Enterキー、
TextBox2でのマウスダウンのいずれかで
TextBox2へフォーカスが移動した場合
TextBox1.Textの 田 が消えて 大 のみ残ってしまいます。
プログラムではkeyDowmイベントで↓キー、Enterキー
を処理しています。
出荷先のlevonoにて発生
1000件以上のユーザーで使用中のアプリですが
この不具合は始めて発生しました。
ソースコード部分------------------------------------------------
当該フォーム内イベント(KeyPreview=True)
Private Sub Form1_KeyDown
(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
Handles MyBase.KeyDown
...
Select Case e.KeyCode
Case Keys.Up
e.Handled = True
xGotoPrevControl(Me)'一つ前のコントロールへ
Case Keys.Down
e.Handled = True
xGotoNextControl(Me)'次のコントロールへ
Case ...
...
Case KeysEnter
e.Handled = True
xGotoNextControl(Me) '次のコントロールへ
End Select
End Sub
'TextBox1からフォーカスが移動した場合----------------
Private Sub TextBox1_Leave
(ByVal sender As Object, ByVal e As System.EventArgs)
Handles TextBox1.Leave
setBackColor(TextBox1, False)'背景色を元に戻す
modCommon.hanToZen(TextBox1)'半角→全角
End Sub
'TextBox2にフォーカスが移動した場合------------------
Private Sub TextBox2_Enter
(ByVal sender As Object, ByVal e As System.EventArgs)
Handles TextBox2.Enter
setBackColor(TextBox2, True)'背景色をセット
End Sub
'別モジュールにて-----------------------------------------------
'一つ前のコントロールへ移動する
Public Function xGotoPrevControl
(ByRef i_f As Form, Optional ByVal i_cntrl As Control = Nothing)
As Boolean
Dim ret As Boolean
If IsNothing(i_cntrl) Then
ret = i_f.SelectNextControl(i_f.ActiveControl, False, True, True, True)
Else
ret = i_f.SelectNextControl(i_cntrl, False, True, True, True)
End If
Return ret
End Function
'次のコントロールへ進む-----------------------------------------
Public Function xGotoNextControl
(ByRef i_f As Form, Optional ByVal i_cntrl As Control = Nothing)
As Boolean
Dim ret As Boolean
If IsNothing(i_cntrl) Then
ret = i_f.SelectNextControl(i_f.ActiveControl, True, True, True, True)
Else
ret = i_f.SelectNextControl(i_cntrl, True, True, True, True)
End If
Return ret
End Function
'コントロールの背景色をセットする---------------
Public Sub setBackColor
(ByRef i_ctrl As Control, ByVal i_bln As Boolean _
, Optional ByVal i_blnCyan以外 As Boolean = False)
Dim newColor As Color
If TypeOf i_ctrl Is TextBox Then
newColor = IIf(i_bln, Color.Cyan, SystemColors.Window)
ElseIf ... Then
newColor = ...
ElseIf ... Then
newColor = ...
Else
MsgBox(i_ctrl.Name)
Stop
End If
i_ctrl.BackColor = newColor
End Sub
'指定されたTextBoxの.Textを全角に変換する-----------
Public Sub hanToZen(ByRef i_txt As TextBox)
i_txt.Text = StrConv(i_txt.Text, VbStrConv.Wide)
End Sub
---------------------------------------------------------------
StrConv()の3つ目の引数(デフォルト)localeID=0
が原因かとも思いましたが、先方に確認したらシステムロケールは
日本語(日本)でした。
以上です。
よろしくお願いします。
【追加事項】
ユーザーの許可を得て代用PCを使用していただき
当該PCを送付してもらって、デバグコードを埋め込む等して
原因解明・不具合修正しようと思いっています。