掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
別フォームから1つの関数をcallするには (ID:115285)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>”System.Windows.Forms.Formのメンバではありません。” ええ、もちろんです。 そもそも、InpSiire 関数の引数 Frm が2つの違うクラスである Form1 と Form2 を受け取ることができるのは、Form1 と Form2 が System.Windows.Forms.Form クラスを『継承』しているから です。ですから Form クラスで実装されている Name プロパティ などを使用することは可能です。 例) Public Sub InpSiire(ByRef Frm As System.Windows.Forms.Form) With Frm Debug.WriteLine("引数は " & .Name & " です。") End With End Sub ところが、.Label10 はクラス Form1(もしくは Form2)で定義されています。 当然、メンバでは無いとエラーが出ます。 こういった使い方をしたいのであれば、1つの方法は System.Windows.Forms.Form を継承して Label10 を実装したベースとなるフォームを作成し、それを Form1 と Form2 が『継承』することです。 ただ、この辺りの話になってくると全体の仕様が分からないと…わざわざ 継承する必要があるのか?ということを検討しなければなりません。 もう1つ思いつくのは型変換(キャスト)して Form1(もしくは Form2) クラスの変数に代入することです。 例) Public Sub InpSiire(ByRef Frm As System.Windows.Forms.Form) Dim wForm1 As Form1 Dim wForm2 As Form2 Try wForm1 = CType(Frm, Form1) Catch End Try Try wForm2 = CType(Frm, Form2) Catch End Try wForm1 = Nothing wForm2 = Nothing End Sub …ただ…引数として渡した意味は薄れます。 ところでこの関数は特定のテキストボックスのテキストをキーにして ラベルを1つだけ設定するのみの関数ですか? それだけの機能なら文字列を渡して文字列を返す関数でいいんじゃ ないですか?もしくはテキストボックスとラベルを引数で渡すとか…
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.