タイトル | : FlexGridが絡むTextBoxエラー時の対処 |
記事No | : 5928 |
投稿日 | : 2007/07/27(Fri) 15:45 |
投稿者 | : KORO |
[[OSのVer]:WindowsXP SP2 [VBのVer]:VB.NET2003
COMコンポーネントよりAxMSFlexGridを追加し、 Form上にAxMSFlexGridとTextBoxとその他(適当)を配置し、 以下のコードを記述しました。 ------------------------------------------------------------------ Private Sub TextBox1_Validating(ByVal sender As Object, _ ByVal e As System.ComponentModel.CancelEventArgs) _ Handles TextBox1.Validating
'フォーム右上の×ボタン対応 If Me.ActiveControl Is sender Then Exit Sub
With sender If .text <> "" Then MsgBox("入力中") .SelectAll() e.Cancel = True End If End With End Sub ------------------------------------------------------------------ そして実行し、TextBoxにフォーカスを与えた後、AxMSHFlexGridを マウスでクリック選択(これが重要)するとTextBox1のValidatingが 延々と発生し"入力中"のメッセージが表示され続けます。 その他のオブジェクトをマウスでクリックしてもValidatingは一度しか 発生しませんでした。 この原因がわかる方、または対処法を知っている方がいらっしゃいましたら ご教授のほどよろしくお願いいたします。
ちなみに ------------------------------------------------------------------ Private mTxtValFlag As Boolean '発生中フラグ
Private Sub TextBox1_Validating(ByVal sender As Object, _ ByVal e As System.ComponentModel.CancelEventArgs) _ Handles TextBox1.Validating
'フォーム右上の×ボタン対応 If Me.ActiveControl Is sender Then Exit Sub
With sender 'フレックスグリッドの場合 If Me.ActiveControl Is AxMSFlexGrid1 Then '発生中の場合 If mTxtValFlag = True Then 'エラー箇所にフォーカス移動 sender.focus() sender.SelectAll() e.Cancel = True Exit Sub End If '発生中フラグ mTxtValFlag = True End If
If .text <> "" Then MsgBox("入力中") .SelectAll() e.Cancel = True End If End With
End Sub
Private Sub AxMSFlexGrid1_MouseDownEvent(ByVal sender As Object, _ ByVal e As AxMSFlexGridLib.DMSFlexGridEvents_MouseDownEvent) _ Handles AxMSFlexGrid1.MouseDownEvent '解除 mTxtValFlag = False End Sub
------------------------------------------------------------------ のようにフラグで抜けようとしたところ、メッセージは一度しか出ませんが ActiveControlはAxMSFlexGrid1、FocusはTextBox1と言う状況になり フォーム右上の×を押してもTextBox1をクリックしてもValidatingイベント が発生してしまいます。
以上、よろしくお願いします。
|