- PR -

バインドしたTextBoxにキーボード入力すると入力文字が消えてしまう。

投稿者投稿内容
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-10-08 17:17
Visuai Basic 2005 Exprese Edition でWindowsアプリケーションを開発しています。
新規追加(BindingSource.AddNew)画面でDataTableとバインドしたTextBoxにキーボード
入力してEnterボタンを押すと入力文字が消えてしまいます。ただし登録したレコードを
見ると正常に入力した文字が登録されています。この内容について次のことを教えていただきたいのですが、よろしくお願いいたします。
(数字入力のTextBoxにはカンマ付右寄せFormat処理をしているためか、
この現象はありません。)

1.この現象は異常でしょうか
2.正常なら、Enterで確定後も入力文字が見えるようにする方法を教えてください。

以上よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-09 06:57
その辺りでやっていることを、順番に説明してください。
コードを載せないでね。(読む人に、読み解くことを強いないでね)
そうやって整理すると、自然と解決することもあります。(自分で解決するための手段を知らないか、自分がするべき努力を怠っているように見えます)
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-10-09 08:15
Jittaさん、解答ありがとうございます。
その後、別のProjectを作成し、同様なテストを行ったところ、質問いたしました現象は
発生しません。もしかするとデータ型の型変換制御(Option Strict)で暗黙的な変換を
規定値の(なし)に設定しているせいかもしれません。
Jittaさんの言われる「自分がするべき努力を怠ってる」に該当しているようです。
もう少しテストをして見ます。(結果はこのスレッドに報告します)
ありがとうございました。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-10-09 11:21
それはないw
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2007-10-09 12:10
改行されているだけだったりして...
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-10-09 14:50
ぶさいくろうさん、末記人さん、参考意見をいただきありがとうございました。
この問題で、今朝から悩み他の仕事が手につきません。
ぶさいくろうさんの言われる通りデータ型の型変換制御を暗黙的な変換をなしに設定
している事ではなさそうです。なぜなら次のように改良しても入力文字が消えてしま
いました。
【改良内容】
型変換制御の暗黙的な変換を「エラー」設定に変更しエラー箇所(約100箇所)
を修正しました。まだ6箇所ほど型変換の方法がわからないので、設定を「なし」に
戻してテストしましたが、入力文字が消えてしまいます。

その後、テストを繰り返していましところ、次の通り原因が判明しました。
問題のTextBoxをフォームに配置するときに、右となりにありますComboBoxnのHeight
(20)と合せるために、TextBoxのMultilineプロパティをTrueに設定し、Heighを20に
設定していました。

このことは,さして問題ではありませんが、TextBoxに文字を入力してEnterキーを
押すと「末記人さん」の言われたように改行されて、入力した文字が1段上に上がり
見えなくなってしまっていたのです。こんな問題を投稿してしまい申し訳ありません。
大変ご迷惑をおかけしました。





[ メッセージ編集済み 編集者: だんじり 編集日時 2007-10-10 10:12 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-10 06:29
解決しているけど、誤解されているようなので、補足。

> その辺りでやっていることを、順番に説明してください。
 「どんな処理をしているのか」わからないと、「なぜその処理だと悪いのか」を説明できません。最初の質問文に書かれているのは、
a. TextBox が複数ある
 a.1. ひとつは数値である
 a.2. a.1 は、イベントで表示状態を制御している
b. 複数のテキストボックスは、DataTable をバインドしている
c. 現象が発生するのは、行を追加したとき
d. 現象は、新規入力したデータが消える
 d.1. ただし、数値のものは消えない

です。a.2 はいいとして、
1. c で、BindingSource.AddNew をするタイミングと、TextBox が消えるタイミングの関係
2. TextBox に表示しているものと、AddNew するものの関係
3. 二つの TextBox で、指示している内容の違い
がわかりません。


> コードを載せないでね。(読む人に、読み解くことを強いないでね)
 コードをここに載せると、あなたがしたかったことではなく、したことを見てしまいます。
しかし、したかったことと、していることの差異を見つけるのがデバッグの基本です。
他人の書いたコードを読み解くことは労力のかかることです。
それ以上に、書かれていない「したかったこと」を想像するのは不可能に近いことです。
このため、コードではなく、あなたがしたかったこと、実際にしていることを箇条書きで書いて欲しいのです。


> そうやって整理すると、自然と解決することもあります。(自分で解決するための手段を知らないか、自分がするべき努力を怠っているように見えます)
 一番「しなければならない」ことは、これら情報の整理です。
情報の整理をすること。これが「するべき努力」です。
情報が整理されていない。必要な情報がそろっていない。そんな状態では、解決できるものも解決できません。

 どこかでフレームの元になってしまっていますが、大事だと思うので、誰にでも何度でも繰り返します。(なお、ヒステリック(短気、感情的)にするのではなく、ナーバス(神経質)にやってます。)
 ウェブに投稿する質問文を書いたら、まず、あなたの周りの人に見せてください。
○ あなただけが知っていることが省かれていないか。
○ 誤字、脱字がないか。
○ 外へ出したらまずい情報を書いていないか。
○ 状況が、第三者に理解できる内容となっているか。
(○ 可能なら、魅力的な文章か。←俺、これできねぇ)

 まず、あなたがどういう結果が欲しくて、どんな指示をしようとして、実際にはどう指示していて、どんな結果になっているのか。
それを知らなければ、どんな問題も解決できないと思います。
 反対に、それらの情報がそろえば、問題を解決できなくても、回避することはできるでしょう。
ここに書かれているのは、「実際にはどう指示していて」の一部と、「どんな結果になっているのか」だけです。
自分で解決するにしても、他の人に尋ねるにしても、他の情報をそろえる必要があると思いませんか。


引用:

このことは,さして問題ではありませんが、TextBoxに文字を入力してEnterキーを
押すと「末記人さん」の言われたように改行されて、入力した文字が1段上に上がり
見えなくなってしまっていたのです。こんな問題を投稿してしまい申し訳ありません。
大変ご迷惑をおかけしました。


私は、それは重要な情報だと思います。
ここで、この現象が起こる(このように見える)ケースというのは、希だと思うのです。次のような条件を満たさなければならないと思います。
* TextBox が、複数行入力可能に設定されている
* & スクロールバーを表示しないように設定されている
* & 1行分の表示幅しかない

 ここまで(どういう条件下でそうなるか)考察されていれば良かったのに、とは思いますが、「どういう条件で発生するだろう?」と、疑問に感じた人が一人でもいたら、重要な情報の提示なのではないでしょうか。
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-10-10 09:35
Jittaさん、ありがとうございました。
問題が発生したらどのように解決すればいいのかを整理して説明いただき、大変参考
になりました。特に状況説明は大変難しくJittaさんが示されたように箇条書きにした
ほうがわかりやすく、抜けも出ないような気がします。ただし、見知らぬ人に説明する
のに箇条書きでは失礼と思うのは私だけなのでしょうか。(なお、1. c の新規追加(BindingSource.AddNew)画面とは単票形式でレコードの新規追加画面としてフォームを
Loadしたタイミングで行っています)

その上で自分は何をしたいかを整理することですね。今回の場合で私がはまり込んでし
まったのは、文字入力TextBox のMultilineプロパティをTrueに設定したことを忘れて
いたことです。なぜならこのフォーム上には文字入力TextBoxは2個しかなく(他は
Formatした数字入力やComboBox、DateTimePickerです)2個ともMultilineをTrueに
なっていたため「Visuai Basic 2005では、文字入力TextBoxで入力を確定すると入力
文字が消える」と思い込んでしまったのです。こんなことから質問が「この現象は
正常ですか?」と「Enterで確定後も入力文字が見えるようにする方法は?」の内容に
なってしまいました。今後は状況説明と問題点を箇条書きにして整理します。
本当にありがとうございました。


追記削除

[ メッセージ編集済み 編集者: だんじり 編集日時 2007-10-11 11:06 ]

スキルアップ/キャリアアップ(JOB@IT)