- - PR -
TextBox のVisibleプロパティを False に設定するとプログラムから書き込みも参照も出来なくなる。
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-22 11:01
皆さんどうもありがとうございます。投稿前には勿論別のプロジェクトを作成し
テストも行いました。 再度じゃんぬねっとさんからご指摘いただいたミニマムコードで再確認したところ 正常に動作しました。(デザイナでVisible = Falseに設定しても正常でした。) となると投稿前のテストとじゃんぬねっとさんの指摘内容とは違いがあるようでです。 以下、エラーが発生する状況を詳しく説明します 日数TextBoxに入力後[Enter]ボタンか[Tab]ボタンで、日数TextBoxからフォーカス 喪失たときに次の処理を行っています。 →金額TextBox.Text = (CInt(日数TextBox.Text) * CInt(単価extBox.Text)).ToString この場合の単価TextBoxのVisibleプロパティをFalseに設定しておくと次のような エラーが発生し、単価が参照されていないようです。 ただし、この単価はテーブルからバインドしたデータで、フォームのLoad時に単価を 単価TextBoxに設定をした場合は正常に動作するようです。 勿論、単価TextBox.TextのVisibleプロパティをTrueに設定すると正常に動作します。 エラー内容→String "" から型 'Integer' への変換は無効です。 どうもフォーカス喪失時では、VisibleプロパティをFalseに設定しているTextBox のデータを参照できないようです。又書き込みも同様に出来ません。 以上のようなテスト結果ですが、よろしくご指導下さい。 13行目の単価TextBox.Texを単価TextBoxに修正 [ メッセージ編集済み 編集者: だんじり 編集日時 2007-11-22 11:24 ] | ||||||||||||||||||||
|
投稿日時: 2007-11-22 11:22
この処理の直前に MessageBox.Show(単価TextBox.Text) するとどうなります? | ||||||||||||||||||||
|
投稿日時: 2007-11-22 11:46
まるくさん、早速ありがとうございます。
ご指摘の「MessageBox.Show(単価TextBox.Text) 」を挿入してテストしましたが MessageBoxに[OK]ボタンが表示される以外に何も表示されません。 ちなみにIntelliSense機能でCInt(単価TextBox.Text)を見ましたが テキストビジュアライザは""(空白)となっています。 また単価TextBoxのVisibleプロパティをTrueに設定すると当然MessageBoxには 単価金額が表示され、計算結果の金額TextBoxにも正常に表示されます。 以上ですが、取り急ぎ報告いたしました。 修正・・入力した数字→単価金額 [ メッセージ編集済み 編集者: だんじり 編集日時 2007-11-22 11:53 ] | ||||||||||||||||||||
|
投稿日時: 2007-11-22 11:48
いや、それより CInt("").ToString のほうがわかりやすいんじゃない? | ||||||||||||||||||||
|
投稿日時: 2007-11-22 11:53
仰っている意味が良くわかりませんが、私が何か間違ったことを書いてしまったということでしょうか?
検証もなしにいきなりコンバートしてはまずいでしょう。 Integer.TryParse (System.Int32.TryParse) メソッドを使用してください。
本当にそうでしょうか?
再現しないことを確認しました。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2007-11-22 11:54
じゃぁ、単価や日数を入力しなかったら? | ||||||||||||||||||||
|
投稿日時: 2007-11-22 12:24
こんにちは。
今回の問題はVisibleプロパティ云々ではなく、単価TextBoxに値が設定されているかどうかの問題のような気がします。 どうも問題箇所の切り分けができてないように思えます。 ・どの時点(操作)で単価TextBoxに値が入っているか ・どの時点になると単価TextBoxに値がクリアされているか を調べて、その間の処理をステップ実行などすると解決するかと思います。
また、ご提示の計算では日数TextBoxに数字が入力されていなくても同様のエラーが出ると思われます。 その辺りもご注意ください。 | ||||||||||||||||||||
|
投稿日時: 2007-11-22 12:25
じゃんぬねっとさん、ありがとうございます。
書き方が悪く誤解されたようですが、再度以下の通り説明します。 説明→となると私が投稿前のテストした状況と、じゃんぬねっとさんの再確認指摘 (ミニマムコード)とは状況の違いがあるようで、再度私のテスト状況を説明します。 また確認していただいたコードをいただきましたが少し状況が違うようようですので 再度説明します。 日数TexBoxに数字を入力し、[Enter]キー等を押して日数TexBoxからフォーカスが 喪失したときにVisibleプロパティをFalse設定している単価textBoxの値を取得でき ない問題です。 Jittaさん、ありがとうございます。 単価や日数を入力しなかったら?との事ですが、単価はあらかじめバインドされた テーブルの単価フィールドから表示(非表示ですが)していて、日数TextBoxに日数 ノミを入力しますが、何も入力しないとフォーカスが日数TextBoxに居て、何も発生 しません。 以上取り急ぎ報告します。 |