私は度々、質問者の方が他のフォームのコントロールを直接操作するコード(Controlsプロパティ経由であったりアクセスレベルをpublicなどにしてあったり)書かれているのを見ると「(設計上の理由で)他フォームのコントロールを直接操作するのはお勧めしません」とアドバイスのつもりで書いてたりするのですが(毎度それを読まされてうんざりされてる方もいるかもしれませんが)、その「他のフォームのコントロールを直接操作するのはお勧めしない」ということはおかしい事でしょうか?
私は汎用性などを考え設計的な理由でそういってるわけで(理想をいえばモデルを用意することなんでしょうが、そこまでいうつもりはないです)、技術的理由でいってるわけじゃないです。
元ネタは
http://oshiete.goo.ne.jp/qa/7582043.html
なのですが正直相手にするのに疲れたので他の方の意見もお聞きしたいと思ったしだいです。
No.5ベストアンサー
- 回答日時:
> オーナースレッドが同じなら他フォームのコントロールを直接操作しても問題はない。
確かに「例外要因にならない」って意味では問題ないでしょうが、オーナースレッドが同じ場合とそうでない場合で異なるコードを書くのは徒に混乱を招くだけなので、例外が発生する(=オーナースレッドが別である)ことを前提に書くのが普通でしょうねぇ。
フォームの可搬性とか以前の問題で、状況により例外が発生してしまうようなコードは基本的にNGでしょう。
#例外でトラップする以外にエラーチェックしようがないケースはもちろん除きますが
回答ありがとうございます。
おっしゃるとおりオーナースレッドと同じかどうかで使い方が違うと混乱の元にしかならないですね。そんな場合分けで使い方を覚えたくもないですし。
No.4
- 回答日時:
僕はもっと強く:「他に手がないほどの切羽詰まった状況でない限り、よそ様のコントロールを直接触らない(触らせない)」です。
# やりたいのは[印刷ボタンを押したい]んじゃなく、[印刷したい]のはず。
No.3
- 回答日時:
フォームのオーナースレッド外からの変更は例外誘発要因なのでお勧めするしない以前の問題だと思うのですが、そーゆー事ではないのでしょう
か?回答ありがとうございます。
そういう事ではないみたいです。
先方の主張としては
オーナースレッドが同じなら他フォームのコントロールを直接操作しても問題はない。なのでその条件下では他フォームのコントロールを直接操作するのは当たり前の事。
技術的に問題があるわけでもないので「他フォームのコントロールを直接操作するのはお勧めしない」というのは意味がない。
という事みたいです。
私が誤読をしてなければですが。
No.2
- 回答日時:
おかしいことを言っているとは思いませんよ.
こういうところの解答は,よくわかっていない人も解答しているから,
あまり気にしない方がいいと思います.
.NETになる前の,VB使いの人だと,
他のフォームのコントロールを直接操作したくなりそうな気がしますが,
まぁ,「とにかく動けばいいんだ」という人が居ても,
それはそれで,人それぞれの考えですから・・・
「一応のアドバイスはした」ということで,いいじゃないですか.
回答ありがとうございます。
色々な方がいらっしゃるのはわかってますので自ら望んでやられてる方にまでいうつもりはないんですけどね。
No.1
- 回答日時:
途中から質問者も出てこなくなったので放置していましたが……
回答しておいてアレですが、私はプロパティ経由でアクセス。で組んでいますね。
フオームのインスタンス生成して、プロパティで設定。
フォームの表示時にプロパティに応じてコントロールの設定。
フォームを閉じた後プロパティ経由で結果を受け取り…ってところです。
といってもC#はつい2ヶ月くらい前から必要に迫られて触り始めたのですが。
# 書籍2冊、あとはサイト見ながら…って程度のレベルです。
# C言語ならまぁそこそこ。C++は一応読める(けど設計まではできない)ってくらいで。
# カプセル化も考え方の意味は理解している(つもり)です。
プロパティ経由ならアクセサーで制限できたりしますし。
コントロールを直接だと設計がまずかった(命名がまずかった)などで変更される場合がありますし。
# まぁ、プロパティでもいまいちだったりすると名前変更することがありますが……。
privateとpublicは使い分けているつもりですが……少々怪しいと言わざるをえない状況です。
# まぁ基本的にprivateでフィールドとか作りますかね。他から使われても困るので。
Controlsプロパティは……自分のフォーム上のコントロールでまとめて無効/有効を切り替えるときに使うくらいでしょうか。
あんまりそういう機会が無いので使いませんが。
# いや、ホントは使う機会はあったんですけどね。有効に戻す部分が条件いろいろだったので諦めた(制限事項で逃げた)ので。
1つのアプリでユーザーが操作できるのはアクティブになっているフォーム1つ(アプリケーションモーダル)でしか使っていないから…でしょうけど。
モードレスになるとまた変わるんでしょうけどね……。
# C+Win32APIでもモードレスほとんどやったことないしなぁ。
回答ありがとうございます。
私もモーダルやフォーム2つくらいまでならプロパティで済ませてしまいそうな気はします。
さすがに多数のフォームのコントロール(の値)が相互に作用するとかになるとプロパティを使ってもコードは大変なことになっちゃいますけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(悩み相談・人生相談) 昨日、ネット通販のお問合せ対応(メール)の求人のアルバイトの面接を受けに行きました。 その時に簡単な 3 2022/05/11 08:30
- 教えて!goo しょうもない質問をする人 10 2022/07/29 00:08
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- 一眼レフカメラ タムロン100-400mmとシグマ100-400mmで悩んでいます。 3 2022/04/25 16:10
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
- ビデオカメラ ビデオカメラとUSBからBlu-rayディスクを作成する方法について ビデオカメラはSONYのHDR 3 2022/09/02 21:30
- モニター・ディスプレイ パソコンの立上げ画像の段階で画面の上半分が真っ白で何も見えない 7 2022/09/29 09:40
- その他(悩み相談・人生相談) きちんとした遠隔操作や飛び道具を作ったり扱うのは男に多いが、姑息で間接的な攻撃したがるのは女に多い? 1 2023/07/14 06:59
- 哲学 きちんとした遠隔操作や飛び道具を作ったり扱うのは男に多いが、姑息で間接的な攻撃したがるのは女に多い? 3 2023/07/15 07:05
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で角が丸いテキストボックス
-
C#で自分のウインド・ハンド...
-
エクセル・VBA CheckBoxのオブ...
-
コントロールを移動できない
-
カメラスクロールするのを動画...
-
VBAのフォームでTextBoxがいっ...
-
ACCESS2010のVBAでフォーム内ク...
-
コントロールの絶対位置を取得...
-
エクセル コントロールツール...
-
EXCELでactivexコントロールを...
-
ユーザコントロールのイベント...
-
Groupboxの配下のコントロール...
-
自マシンのIPアドレスを変更す...
-
Excelコマンドボタン名を変数に...
-
C# タブのコントロール取得
-
無料で使えるグリッドコントロール
-
Labelコントロールの(左右)余...
-
excelのリストボックスで選択し...
-
VBAのエラーについて、”実行時...
-
VBのフォーム上にPDF文書を表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
vb.netで画面のコントロールId...
-
C#,vb.netで業務用アプリ開発と...
-
EXCELでactivexコントロールを...
-
フォーム上の現在アクティブな...
-
ExcelVBAでListViewが使用できない
-
コンボボックスの文字によるif...
-
C#で角が丸いテキストボックス
-
エクセルVBAでオプションボタン...
-
ユーザーフォームで動的(Me.Con...
-
VBAのフォームでTextBoxがいっ...
-
アクセス特有の書き方?
-
エクセル コントロールツール...
-
間違えて配置してしまったコン...
-
変数をコントロール型で使用す...
-
(VBA)スピンボタンの大量...
-
Labelコントロールの(左右)余...
-
excelのリストボックスで選択し...
-
Excel VBA で Richtextboxを使...
おすすめ情報