質問者
VB 2008)Enabled=False時にEnter処理が実行される

質問
-
いつもお世話になっております。
VB 2008の設定について
質問があり、投稿させて頂きます。
作成中のプログラムにて
あるテキストボックスがEnabled=Falseになった時点で
そのテキストボックスのEnterイベントが実行されます。
他のプログラムを確認しましたが、
Enabled=FalseになったらEnterイベント実行
されるようなはなく、
プログラムの設定でそのような動きになっていると
考えています。
しかし、どこの設定で行われているのかが分かりません。
(EnabledChanged内でEnterイベントを実行しているわけでもありませんでした。)
Enabled=FalseになったらEnterイベントまたは他のイベントを実行する
設定はどこで行う事ができるのでしょうか?
すべての返信
-
まずはコードエディタで「すべての参照の検索」を実行し、そのテキストボックスが使われている箇所を精査されてはいかがでしょうか?
# Visual Studio 2008 にその機能があったかどうかは失念しましたが・・・
本フォーラムは、ユーザー(開発者)同士で情報交換を行うためのコミュニティです。初めて利用される方は フォーラムでご質問頂くにあたっての注意点 をご覧ください。
-
フォーカス遷移を操作している箇所はありませんか?
ActiveControl = TextBox1
という処理を実行すると、TextBox1 が Enabled = False の状態であっても TextBox1 の Enter イベントが発生します。しかし、どこの設定で行われているのかが分かりません。
TextBox の Enter イベントで StackTrace を追ってみては如何でしょう。
Dim txt = DirectCast(sender, TextBox) If Not txt.Enabled Then Dim st As New System.Diagnostics.StackTrace(True) MessageBox.Show(Me, st.ToString()) End If
-
LEE_IIIさん、こんにちは。フォーラムオペレーターのKumoです。
MSDNフォーラムにご投稿くださいましてありがとうございます。
ご質問いただいた件ですが、その後いかがでしょうか。
皆様から寄せられた投稿はお役に立ちましたか。
参考になった投稿には [回答としてマーク] をお願い致します。
設定いただくことで、
他のユーザーもお役に立つ回答を見つけやすくなります。
お手数ですが、ご協力の程どうかよろしくお願いいたします。MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~
-
この件について返信が遅れて申し訳ございません。
こちらの件ですが、
ActiveControl = TextBox1
を実行しているわけでもありませんでした。
ただ、無限ループが発生している原因はわかりました。
※不具合の原因について
この不具合が発生しているプログラムでは
テキストボックスを2段に並べて1行とし、
それを10行だけ画面に表示しています。
そして横にスクロールバーがあり、
それを動かす事で複数行入力を
行えるようにしています。
Active_Indexという変数があり、
これは「現在処理中の行は何行目」かを
表すのに使用しています。
そして、各テキストボックスのEnterイベントには
「ACTIVE_INDEX<>テキストボックスの属する行
ならばスクロールバー移動処理を行う」
とありました。
この「スクロールバー移動処理」内でもEnabled=False
を実行しているため、ここで無限ループに陥っている事が
分かりました。
よって、この件はACTIVE_INDEXに
適切な値がセットされていない事が原因でした。
そこで、Enabled=Falseにする前に
Sav_ACTIVE_INDEXに現在処理中の行を指す数値を仮でセットします。
Enabled=Falseを行った後、
Sav_ACTIVE_INDEXの値を元に戻す事で
対応しました。
結局、VBの設定が原因と考えていましたが、
プログラムの仕様が原因でした。
この質問についてご回答頂いた皆様には
大変感謝しております。- 編集済み LEE_III 2021年1月14日 1:04