- - PR -
数値型をソースとするTextBoxに一旦入れた後空白にしたい
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-01-08 16:14
数値型をソースとするTextBoxに一旦数値を入れた後
空白にするとNullにしたいのに フォーカスがTextBoxから離れなくなってしまい困っています。 どうすれば良いのでしょうか。 | ||||||||
|
投稿日時: 2008-01-08 17:09
意味がわからないので再現可能なソース コードを提示して頂けないでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-01-08 17:14
すみません。
TextBoxを数値型のデータセットにバインドしただけで フォームを表示します。 空のTextBoxに一旦数値を入れ空白に戻します。 するとデータソースをNullにして欲しいのに エラーになるらしくTextBoxからフォーカスが離れなくなってしまうのです。 [ メッセージ編集済み 編集者: island_town 編集日時 2008-01-08 17:25 ] | ||||||||
|
投稿日時: 2008-01-08 17:44
再現可能なソースコードでと書かれているので、言葉で説明 するのではなくソースコードを提示していただけないでしょう か。 ちなみに上の文章を読んだ上で、私も意味がわかりませんで した。 TextBoxを数値型のデータセットにバインドし、空のTextBox に数値を入力したあと空白に戻しましたが、フォーカスは 普通に移動できました。 なので「再現可能なソースコードを」と私も書いてみます。 再現できなければ解決策を示すこともできませんので、よろ しくお願いします。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2008-01-08 17:45
雰囲気は分るんですけど、情報が足りなくてisland_townさんと同じコードを書いて動作させてみることができません。
そもそもWindwosFormかWebかも分かりませんし。 再現可能な最小のソースコードを提示していただけますか。 その最小のソースコードを作っている途中で問題が解決することが結構ありますし、そうでなくても切り分けができるため問題の存在する範囲が絞られて掲示板を見ている他の方に伝わりやすくなります。 ぜひお願いします。 | ||||||||
|
投稿日時: 2008-01-08 19:03
開発環境とかも please
実は Validating イベントで何かしているとか。 | ||||||||
|
投稿日時: 2008-01-08 21:26
超度Lv 1のエスパーである私が、先見してしんぜよう。
以下の条件を満たす場合、発生する DataTableにおいて、Not Nullの項目をデータバインディングしている。 .NET Framework 2.0以降の場合は、AutoValidateプロパティがEnableAllowFocusChangeではない。 (2.0以前にはないプロパティなので、その場合は一番目の条件のみ) TextBoxの内容を空にすると、バインディング先のDataTableにDbNullを渡そうとする。 # 渡すタイミングは、経験上、Validatingイベント通過後(e.Cancel = false)、Validatedイベント前。 # 多分、OnValidating()の中でしょう。 しかし、Not Nullの項目にNullをセットしようとするので、内部的にエラーが発生する(してると思われる)。 OnValidating()がキャンセル扱いになり、フォーカスアウトできない。きっとそんなところ。 じゃあなぜ、TextBoxの内容を空のままだと、フォーカスアウトできるのか? 多分DataTableの現在値が同じだから、エラーとはしなかったんじゃないかと。これは推測なので、きっと事実とは異なるでしょう。 ちなみに、.NET Framework 2.0以降の場合は、AutoValidateプロパティがEnableAllowFocusChangeであれば、フォーカス移動は可能。 その場合、DB更新前に厳密な入力値チェックを行っとかないと、DB更新でおちるよ〜。 ついでに、ミニマムコードは、Not Nullの項目をバインドさせたもので (ぺたぺた貼り付けて、デザイナ上でプロパティいじるだけで)、簡単に再現できるでしょう。 超度Lv 1ではここまでが限界です。 | ||||||||
|
投稿日時: 2008-01-08 21:30
バインドした項目は、Not Nullの列ですかね? それでもなお、フォーカス移動したなら、先の回答は嘘っぱちにになるな。 #うちでは再現したんだけど |
1|2|3|4
次のページへ»