スタートアップフォームのコントロールにアクセスするには?

解決


MenPin  2005-09-12 03:37:57  No: 125184

スタートアップフォームのコントロールに他のクラスからアクセスしたいのですが、アクセスできません。どのようにアクセスすればいいのでしょうか?よろしくお願いします。


ガッ  2005-09-12 04:57:03  No: 125185

あんまり得策じゃないけど…アクセス修飾子をPublicにする、とか?


MenPin  2005-09-12 07:05:33  No: 125186

フォーム自体はPublicだし、コントロールもFriendになってるのでアクセスできるはずなのです。多分インスタンス名じゃなくてフォームのクラス名でアクセスしようとするからダメなのですかね。でもスタートアップフォームだからインスタンス名がわからない。知る方法はありますか?


ガッ  2005-09-12 07:14:25  No: 125187

Application.Run(New Form1())
とかなっているのなら、

クラス変数なりに、
  public sfrm as form1
と宣言して、
  sfrm=New Form1()
  Application.Run(sfrm)
としてみてはどうでしょ?
…ダメですかね?


MenPin  2005-09-12 07:36:35  No: 125188

自分は良く分からないので、スタートアップフォームでそういう記述がどこにあるか分かりませんでした。
フォームのインスタンスを作成しているような記述は見当たりませんでした。


ガッ  2005-09-12 17:29:16  No: 125189

んー、.NETじゃないのかなぁ…
では、環境を書いてください。←最初に訊くべき(orz


名無し  2005-09-12 18:33:46  No: 125190

>では、環境を書いてください。←最初に訊くべき(orz

いやむしろ最初に書くべき。


特攻隊長まるるう  2005-09-12 18:40:18  No: 125191

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200509/05090041.txt
↑の質問者の方と同じ方であれば多分[VB.NET]でしょう。
(ハンドルが同じでも自分の開発環境はスレッドごとに記入お願いします)

>スタートアップフォームでそういう記述がどこにあるか分かりませんでした。
>フォームのインスタンスを作成しているような記述は見当たりませんでした。
ええ、ありません。スタートアップフォームがそういう意味ですから。
複数のクラスでフォームの参照を使いたい場合、スタートアップの設定を
Sub Main にしてガッさんのレス通り
>  Application.Run(sfrm)
を使うのが形として良いと思われます。オブジェクト指向を気にするなら
親のクラスが Form1 の参照を一括して管理するのが重要です。

別の方法でスタートアップフォームが自分自身(Me)の参照をモジュール等
グローバルな変数に設定する方法もあります。が、Form 自身の参照を
外部に渡すという事は、外部で破棄されたり変更されたりする手段を与える
…という事ですので良い形ではありません。
同じ理由で、Form 上のコントロールも、直接その参照を外部に公開せず、
Form にそのコントロールを設定するプロパティやメソッドを用意して
設定させます。
http://www.bcap.co.jp/hanafusa/bbs/wforum.cgi?mode=allread&no=2017&page=0


MenPin  2005-09-13 12:46:44  No: 125192

他のクラスからアクセスはしないほうがいいのですね・・・
回答ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加