- PR -

TextBox のVisibleプロパティを False に設定するとプログラムから書き込みも参照も出来なくなる。

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-11-28 21:55
 はじめにお断りしておきますが、私はある人(リジェクト試行な特定の人)以外はみな、一緒に仕事をしている仲間だと思って書いています。そのため、「みんなが自分で問題解決ができるようになればいい」と思っています。今、それができなくても、明日にはそれができるようになっていればいいな。そう思っています。
 なので、問題に直接答えるより、なにが問題なのか、問題を見分ける視点、問題を解決するための考え方をアドバイスしたいと思っています。

引用:

だんじりさんの書き込み (2007-11-27 21:19) より:
今までも色んな先輩に指導されながらペコペコ頭を下げてそれでも我慢しながら耐えてきましたが、もう止めました。


はい。やめて正解だと思います。
ただペコペコ頭を下げるのではなく、何を指摘されているのか、何を学ばなければならないのか、考えて、学んでください。
学ぶことをしないから、正解にたどり着けないのです。

 例えば、私は前にも、「まずリファレンスをあたり、それぞれのプロパティ、メソッドがなんのために定義されているか、確認しましょう」と書きました。それをされていれば、今回のように「Visible = False ならばバインドされない」という思い込みはなかったと思います。実験されたように、「デザイナで False にしている場合はバインドされないけど、なぜ?」から始まったのではないでしょうか。

引用:

だんじりさんの書き込み (2007-11-27 22:46) より:
Jittaさん、はっきり言わせていただきましょう。
貴方は、たらたら能書きが多く聞いてられません。私も気を使って我慢していましたが、大変聞き苦しいです。それも問題が解決してからの講釈ばかりで、問題解決の解答を責任もって投稿してください。それと自分が解答した内容に対して質問者が質問したときぐらいは答えて欲しいのです。


 なるほど、では、私の目的は達成しているようです。
 私は、「恩は忘れやすいが、恨みは長く覚えている」と思っています。なので、この次、どこにでも投稿するときに「Jittaのような奴からタラタラ能書き垂れられるかもしれない」と振り返っていただければ幸いです。私もあちこちの掲示板に顔を出しています。また私から言われないように、気をつけてください。
(もっとも、最初からそのつもりでは書いていませんけど)

 私は前に、「私の都合も考えてください」と、書いたと思います。私は、見ることはできますが、投稿できる時間は限られています。いつでもタイムリーに答えられるわけではありません。質問とは、他のスレッドでのことだと思いますが、他の方が答えてくださっていますよね?また私も、「名指しでの質問には答えられない」と答えたと思います。あなたにとって納得がいかなくても、これが質問に対する答えです。その答えを提示した理由も添えてあったと思います。


引用:

こういうのをはうざいといいます。勝手に自分の判断で他人を決め付けるだけではなく、見下げた態度が許せないのです。こんなことを書いても反感こそあれ、反省など生まれるはずがないのです。


 うざいのは、上記の通りです。それは、目的通りです。
 他人を決めつけてはいません。断定はしていないでしょう?「とお考えのように感じます」と、あなたの態度に対して、私の感想を述べているのですが。。。
 また、これは失礼だろうと思ったので省きましたが、「ペコペコ頭を下げてそれでも我慢」しているのは、感じていました。つまり、答えをもらうためにうわべだけ取り繕っている、と。そのように感じた理由は、以前のスレッドで書いたことが実践されていないからです。私は、「周りの人に、投稿文が赤の他人に理解可能か、聞いてみてください」とも書きました。そのことも実践されていないようです。
 初心者であることや、質問をしていることを見下げることはしません。しかし、この、うわべだけ取り繕う態度については見下げます。反感を覚えるのは結構です。ある程度、それを目的としていますから。でも、そのうわべだけ取り繕う態度こそ、反感を買っていることも、お忘れ無く。

 なお、私は人を見て(感じて)回答内容を変えます。自分でやろうとしている人には、とことん付き合います(13ページ以降)。
 一緒に仕事をするなら、何でも人に聞きに来る人より、自分である程度やって、「こんなことで詰まっているんだけど、次はこうやってみるね。他になんか調べる方法ないかなぁ?」と聞きに来る人の方がいいです。私は、みんながこうなってくれればいいと思っています。こうなるために、どんな聞き方があるか、どんな考え方があるか、アドバイスをします。
 リアルでは、複数の人から「とりあえず、あいつに聞け」に指定されています。まったくわからない分野の質問もされます。直接的な回答は得られないが、解決のためのヒントや回避策が出てくるからだそうです。


引用:

引用:

それができないと、原因を特定できないのではないでしょうか。
で、これが「大変だから」と言ってさぼっていては、いっこうに前に進めないと思います。今回の問題の根本的なところは、開発環境が便利になりすぎたことですかね??
なまじ、「ノンコーディング」とか宣伝するから。。。


だからどうしろといいたいのですか。


 ここは完全に誤解です。ここは、だんじりさん宛ではありません。「まとめちゃいます」と書いているように、Error401さんへのレスです。
でも、これは気になるので。
引用:

「ノンコーディング」は時代の流れで、このことを無視していると時代から取り残されてしまうのではないでしょうか。


 時代から取り残される?なぜ?
 私は、「新しいことが良いことだ」とは思いません。流行が良いことだとも思いません。
 自分が使うものがどんなものか、理解する。自分が何をしようとしているか、理解する。自分が書いたものが何か、理解する。これは、どんなツールを使うことになろうとも、必ず必要なことで、良い悪いという判断を超えた、必要なものだと思います。むしろ、ノンコーディングを、必要な知識を習得する機会を奪う、有害なものであると考えます。
 私は流行がどうであろうと、このスタンスを変えるつもりはまったくありません。乗り遅れているとしても気にしません。必要なことですから。お気遣いは無用です。
(というか、気遣っているというより、皮肉に聞こえるんですよ。2〜3スレッドより前から、私に対しては悪意を感じているのですが、気のせいですか)
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-11-28 22:01
いったん区切って、と。11/22 18:00 で原因が特定している?私は「調査のめどが付いた」だけで、特定できているとは思わなかったんだけどなぁ。


 と〜っても不思議なので&バグがつぶれて時間を捻出できたので実験してみました。
 DataSet をひとつ作り、これにテーブルをひとつ定義。ここに string の列を複数個作りました。
 この DataSet をデータソースとして追加しました。VS2005 の[データ]メニューから[データソースを追加]で、DataSet をオブジェクトデータソースとして追加。データソースビューで見ると DataTable1 に定義した列が並んでいるので、こいつをフォーム上へドラッグ。

 データソースの作りは別として、だんじりさんの作り方は、こんな感じかなぁ?コードを貼れなくても、こういう、操作手順を書くことはできるよね。


 結論として、DataSource にデータが入るタイミングで Visible が false になっている場合、そのコントロールには値がロードされないようです。
 また、データを持ってくるのも、Application.Run を呼び出すより後の方がよさげですね。そうでないと、DataSource.BindingComplete イベントが発生しませんでした。なので、Visible を false にするのは、このイベント以降が良さそうです。

    試したこと:
  • デザイナで、Visible = false
  • フォームのコンストラクタ、InitializeComponent の後に Visible = false
  • Main メソッドで、Application.Run(new Form1()) とフォームを作成しているが、この作成を外に出してプロパティを変更
  • DataSource.BindingComplete で Visible プロパティを変更→ここで、このイベントが発生しないことに気がつく
  • フォームの宣言を Program クラスの static にして、Application.Idle イベントをハンドル。このイベントで DataSet にデータを追加→DatSource.BindingComplete が発生

で、やっぱり「Visible が false だとバインドしません」というのが仕様なのかどうか、わからない。少なくとも、実装はそうなっているっぽい。
DataSource に「バインド処理がされる直前」っていうイベントがないので、いつバインドされるのかがわからないのですが、Application.Run 以降のようです。

ASP.NET なら自分で制御しなきゃいけないんだけど、Windows の場合、どうなっているんだろう?
kyo
会議室デビュー日: 2006/05/17
投稿数: 18
投稿日時: 2007-11-28 23:40
だんじりさんにとって、「ミニマムコード」(またはじゃんぬねっとさんが書かれた
「現象が再現できる最小限の 'コード'」)が「具体的に」どんなものなのか、
理解できなかったのが、長引いた原因ではないでしょうか?

私はVisual Basic 2005 Express Editionを使ったことがないので、これを使った時の
ミニマムコードが想像できません。
JavaやSQLだと、CODEタグでくくったソースをここでよく見かけます。

ここでちょうどJittaさんから投稿がありましたので、流用させていただきます。

引用:

DataSet をひとつ作り、これにテーブルをひとつ定義。ここに string の列を複数個作りました。
この DataSet をデータソースとして追加しました。VS2005 の[データ]メニューから[データソースを追加]で、DataSet をオブジェクトデータソースとして追加。データソースビューで見ると DataTable1 に定義した列が並んでいるので、こいつをフォーム上へドラッグ。


これ(だけ)が、Visual Basic 2005 Express Editionのミニマムコードなんでしょうか?
(本当に知らないで聞いています)
たぶん、これに(CODEタグでくくった)ソースを加えたものがあると、他の人が再現できる
ミニマムコードになると想像しています。

今回に関して言えば、だんじりさんに「ミニマムコードとはこんなもんだよ」と例示して
いれば、こじれなかったと思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-11-29 01:43
引用:

kyoさんの書き込み (2007-11-28 23:40) より:

今回に関して言えば、だんじりさんに「ミニマムコードとはこんなもんだよ」と例示していれば、こじれなかったと思います。


何度か出ていたと記憶していますが私の認識に誤りがありますか? というより私自身も何度か例示していたつもりでしたが... 悲しいですね。 あれでダメというなら回答者は質問者に対して皮肉のオンパレードになるでしょうね。

ひょっとしてデザイナでのレベルの話でしょうか... そこはそうであると表明して頂くかしないとやっていないのと同じに見られるのはしょうがないかなと思ってしまいます。 少なくともそれ以外の部分は提示できた事実に変わりがないわけです。

さらにひょっとして、"こ れ が 今 回 の ミ ニ マ ム コ ー ド だ!!" と明示しなくてはいけなかったということでしょうか。 そこまで求めるのは無茶ですね。 私個人としては意味さえありません。

以下は独り言に近いですが。

引用:

2007-11-23 11:30 に結果報告いたしましたテストより単純なミニマム コードが考え
付きません。


ご本人はミニマム コードが何であるか理解してるつもりだったようですし、問題解決に繋がらないものは一旦無視するのももはや恒例です。 私は根気よく何度も要求しますけど。

ただ、イヤなら 「答えなきゃいい」 という選択肢もあることは忘れないでおきたいですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-11-29 07:41
引用:

kyoさんの書き込み (2007-11-28 23:40) より:
引用:

DataSet をひとつ作り、これにテーブルをひとつ定義。ここに string の列を複数個作りました。
この DataSet をデータソースとして追加しました。VS2005 の[データ]メニューから[データソースを追加]で、DataSet をオブジェクトデータソースとして追加。データソースビューで見ると DataTable1 に定義した列が並んでいるので、こいつをフォーム上へドラッグ。


これ(だけ)が、Visual Basic 2005 Express Editionのミニマムコードなんでしょうか?
(本当に知らないで聞いています)
たぶん、これに(CODEタグでくくった)ソースを加えたものがあると、他の人が再現できる
ミニマムコードになると想像しています。



この操作に、「デザイナ上で、VisibleプロパティをFalseにする」という操作を加えると、ミニマムコードが生成されます。

ミニマムとはいえ、ツールが大量のコードを生成しますから、この場に投稿するのは躊躇われます。この、「出来上がったコードがでかすぎる」という理由では、だんじりさんがコードを載せないことはもっともだと思います。
とはいえ、このように、操作手順を書くという方法もあるわけです。
「まず、隣にいる人に聞いてみようよ」と書く理由がここにあります。隣の人に、説明するでしょ。そのとき、聞き返されることもあるでしょう。聞き返されたことは、ウェブでも聞き返されるのです。
ラフィン
会議室デビュー日: 2007/11/23
投稿数: 5
投稿日時: 2007-11-29 08:05
 質問者の理解力が回答者の説明に対して相対的に不足しており、回答者が根気強くコメントを繰り返しているところに見かねた新たな回答者が嫌味っぽい発言をして荒れるケースがありますね。「1+1もわからない人が数学の教授に質問してはいけない」というのはその通りかも知れませんが、ここはオープンな場所ですから「数学しか教えられない人が算数の質問に回答してはいけない」というのもまた真ではないでしょうか?

 「質問者に成長してほしい」という想いはすばらしいと思います。ですが会議室の主目的はそれではないですから、そういう想いを持って質問者に接するなら、「やるならちゃんとやる。ちゃんとできないならやらない」心構えでやってほしいです。辛抱できずに嫌味っぽい発言をしてしまうとその想いも嘘に見えてしまいます。

 質問者を育てるという行為にも、プログラミングで言うところの”ミニマムコードを書く”、”リファレンスを見る”等に相当するセオリーがあると思います。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2007-11-29 10:10
あまり関係ありませんが。

誰かが少し言ってましたが、僕はどうして「単価」を非表示にして保持しておく必要があるのかずっと疑問でした。

画面を表示し、金額を算出するまでに時間があった場合、裏で単価が変わってしまっていたらどうすんだろ、と。
仕様を見直せば、今回の問題なんか出てこないのかな、と。

まあ、今となってはどうでもいい話ですが。

ひょっとして、画面上にある表示系の TextBox にすべて Bind されているのではないかとちょっと心配・・・
未記入
会議室デビュー日: 2007/10/13
投稿数: 7
投稿日時: 2007-11-29 10:28
このスレッドは最初から面白く拝見させていただきましたが、私はラフィンさんと逆の意見を持っています。

そもそもだんじり氏は22日11時及び12時時点で回答者から提示されたミニマムコードと比較しながら
自分の状況を詳しく説明しています。私も普通に読んで単純に理解できました。またこの説明を理解した
閲覧者で同じ体験を持つ数人が、その情報を提供してくれてましたよね。
それから(20:42分時点)自力解決されそのテスト手順とテスト結果を提示しています。さらに情報提供者
からのヒントで7個のコントロールについてもテスト手順とその結果まで提供されていました。

ところがこの状況説明を理解できなかった回答者が、根気強く(しつこく)コメント(質問)を繰り返して
いたに過ぎません。だんじり氏にとってはとっくに解決済みなのに、その後1週間もの質問攻めで、はじめは
丁寧に返事していましたが、最後にはプッツンしたのでしょう。

ただ許せないのはJittaさんに対する侮辱です。たまたまプッツンしているときにJittaさんから投稿が
あったからでしょうが、出てきてあやまれ。


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