タイトル : Re: 実行時に選択決定されるForm上のPublic メソッド 投稿日 : 2007/07/31(Tue) 13:10 投稿者 : るしぇ
『継承【inheritance】』についてはご理解いただけてますでしょうか? Form2 および Form3 のコードは先頭のほうに > Inherits System.Windows.Forms.Form と書かれていると思います。これにより、継承元である System.Windows.Forms.Form クラスの ShowDialog メソッドが コーディングなしで Form2 および Form3 で使えます。 また、 > Dim fom As New Form > fom = Form2 > fom = Form3 のように基底クラス(継承元)の変数に格納して操作できます。 このとき、fom を利用して呼び出せるのは System.Windows.Forms.Form クラスのプロパティ・メソッドのみで、そのままでは Form2 および Form3 で定義された関数を呼ぶことはできません。 > fom.Buttun_Click() 'ここができない この場合、Buttun_Click() がコーディングされているのは System.Windows.Forms.Form クラスではなく、Form2 クラスおよび Form3 クラスです。当然、コンパイルできません。 解決法としては、 案1. Buttun_Click() がコーディングされた基底クラスを作って Form2 および Form3 が継承する。 案2.共通のインターフェース(Interface)を Form2 および Form3 に実装する。 案3.共通処理にしない。 Select Case TextBox1.Text Case "0" : Form2.Buttun_Click() Case "1" : Form3.Buttun_Click() End Select # ま、このままだと TextBox1.Text の値を途中で変更されると不都合が # 起こりますが。。。それは別の問題なので。 |