tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: 実行時に選択決定されるForm上のPublic メソッド
投稿日: 2007/08/01(Wed) 10:15
投稿者ひでと
昨日留守にしてゆりましてお礼できませんでした。ありがとうございます。

> >    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 の値を途中で変更されると不都合が
>  # 起こりますが。。。それは別の問題なので。
案3ですが、実際は60の別のFormを呼び出さないといけない為、できるだけ避けたいと考えています。

第1案ですが、正直良く理解できておりません。
Public Class myForm
    Public Sub Button_Click()
    End Sub
End Class
のように新しいクラスを作り、Form2,Form3でそれをInheritsする
Public Class Form2
    Inherits myForm
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Buttun_Click()
    End Sub
    Public Sub Buttun_Click()
        '処理
    End Sub
End Class
ということでしょうか?
この場合 Inherits myForm でコンパイルエラーがでます。
また、
    Dim fom As New Form
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Select Case TextBox1.Text
            Case "0" : fom = Form2
            Case "1" : fom = Form3
        End Select
        fom.ShowDialog()
    End Sub

    Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        fom.Buttun_Click() 'ここができない
    End Sub
End Class
の中のfom.Buttun_Click() はできないと思います。
もう少し アドバイスをお願いします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。