C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 他のフォームのコントロールを参照する方法について


(過去ログ 12 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■3272 / inTopicNo.1)  他のフォームのコントロールを参照する方法について
  
□投稿者/ まるお (1回)-(2007/04/30(Mon) 09:40:17)

分類:[VB.NET (Windows)] 

VB.NET2003を使用しています。
他のフォーム(Form1)で作成したコントロールのプロパティ(checkbox1.cheked)を別のフォーム(Form2)で参照したいのですがうまくいきません。

本には共有したいコントロールにSharedキーワードを追加する、とあったためForm1でフォームデザイナが自動生成したコード内の宣言文「Friend WithEvents checkbox1 as System.Windows.Forms.Checkbox」内にSharedを追加し、
「Friend Shared WithEvents checkbox1 as System.Windows.Forms.Checkbox」としてみたところ、参照はうまくいきましたがForm1のフォームデザイナ上からSharedを追加したコントロールが消えてしまいます。

他の方法を探していたところ、とあるページで
1.クラスモジュールにForm1をPublic Shared で定義
2.上記クラスモジュールのMainプロシージャからForm1を起動。
3.Form2に上記クラスモジュールをimportsで参照
4.Form1から開いたForm2でForm1のコントロールを参照。
と記載があったため同じようにしてみたのですが、3.のImportsの箇所で「名前空間が見つかりません」とエラーが
表示されてしまいます。

よい方法をご存知であれば教えて下さい。
引用返信 編集キー/
■3273 / inTopicNo.2)  Re[1]: 他のフォームのコントロールを参照する方法について
□投稿者/ επιστημη (500回)-(2007/04/30(Mon) 13:11:40)
επιστημη さんの Web サイト
> 他のフォーム(Form1)で作成したコントロールのプロパティ(checkbox1.cheked)を別のフォーム(Form2)で参照したいのですがうまくいきません。

"なんのために"そうしたいのでしょう。

コントロールを他のフォームに晒したとたん、
そのコントロールを勝手に削除/変更することが許されなくなります。

コントロールのプロパティを読み出したいなら、
Form1にそのプロパティ値を返すメソッドを定義し、
Form2からそれを呼ぶのが安全です。

"それでは困る"シチュエーションなのでしょうか?

引用返信 編集キー/
■3274 / inTopicNo.3)  Re[2]: 他のフォームのコントロールを参照する方法について
□投稿者/ まるお (2回)-(2007/04/30(Mon) 14:07:15)
No3273 (επιστημη さん) に返信
>
> "なんのために"そうしたいのでしょう。

Form2にはタブコントロールがあるのですが、Form1で指定した項目に関連するタブページのみを表示した状態で
表示させようと思っています。
つまり、Form1でcheckbox1.checked=trueの状態でForm2を開いた場合には、checkbox1で指定された項目に関する
タブページのみが表示されるようにしたいのです。
そのためForm2の中でif構文を使い、
if Form1.checkbox1.checked=true then
ともっていきたいのですが、必ずFalseで値が返ってしまいます。

>
> コントロールのプロパティを読み出したいなら、
> Form1にそのプロパティ値を返すメソッドを定義し、
> Form2からそれを呼ぶのが安全です。

ご指摘いただいたこの方法も考えましたが、Form1にあるcheckboxの数が多く、ひとつづつのcheckboxに対して
プロパティ値を返すメソッドを作るよりももっと短いコードで実現はできないものかと思ったのです。
sharedを宣言文に追加した場合、コントロールさえ消えなければまったく問題ないのですが。

他に方法がないようであれば上記方法で試してみるつもりです。

引用返信 編集キー/
■3275 / inTopicNo.4)  Re[3]: 他のフォームのコントロールを参照する方法について
□投稿者/ επιστημη (501回)-(2007/04/30(Mon) 14:19:59)
επιστημη さんの Web サイト
> Form1にあるcheckboxの数が多く、ひとつづつのcheckboxに対して
> プロパティ値を返すメソッドを作るよりももっと短いコードで実現はできないものかと思ったのです。

じゃ、boolの配列とか開けにゃならんタブ名の配列を返す
メソッドを用意するほうがよっぽど簡単じゃないかしら。

引用返信 編集キー/
■3276 / inTopicNo.5)  Re[4]: 他のフォームのコントロールを参照する方法について
□投稿者/ まるお (4回)-(2007/04/30(Mon) 14:43:07)
No3275 (επιστημη さん) に返信
>>Form1にあるcheckboxの数が多く、ひとつづつのcheckboxに対して
>>プロパティ値を返すメソッドを作るよりももっと短いコードで実現はできないものかと思ったのです。
>
> じゃ、boolの配列とか開けにゃならんタブ名の配列を返す
> メソッドを用意するほうがよっぽど簡単じゃないかしら。
>

そのようですね。
Form1のチェックボックスのON,OFFによって値を返すpublic変数を作成し、Form2の中でその変数から判断させることに
しました。
どうもありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -