• ベストアンサー
  • すぐに回答を!

VisualBasic 2010

  • 質問No.7841196
  • 閲覧数78
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 4% (7/143)

VisualBasic 2010 でWindowsアプリケーションを作成しています。
以下のような構成を考えております。

・FormA
・ClassA(FormAでの処理を行うクラス)

FormA内でClassAをNewしてClassAのメソッドを使用するようにしています。
その際に以下のようなコーディングをすると意図した動作をしません。

FormA.Txt_Msg.Text = "aaa"

ClassAからFormAに配置したコントロールのTextを変更したりすることは
できないのでしょうか?。
またはやり方が間違っているのでしょうか?

ご存知の方がいらっしゃればご教授お願い致します。

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 74% (465/626)

VBではForm継承クラスは特別扱いされ,クラス名で「既定のインスタンス」にアクセスできてしまいます。
VB2005で復活した機能で,バグの元だと思うのですが,IDEから無効化できない厄介者です。

で,今回の問題はこの「既定のインスタンス」を使っている点です。
なので,簡易的にはFormAのインスタンスをClassAを作成するときに渡すことで解決しますが……。

本質的には,ClassAがFormAに依存しない作りにすることで解決すべきでしょう。
データバインディングを使ったり,メソッド呼び出し後にFormA内でClassAの情報を取得してUIに反映させたりすることで,ClassAはFormAに依存しなくなります。
途中で情報の更新が必要になりそうな場合は,Action系のデリゲートを引数にとったり,イベントを用意したりすることで対応できます。

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 24% (811/3334)

クラスがなんだかわかってないですよね。

フォームもクラスです。

基本的なことは説明サイトも多いので、とりあえず調べておいてください。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ