- PR -

FORMオブジェクトについて

1
投稿者投稿内容
extream
ベテラン
会議室デビュー日: 2005/12/26
投稿数: 83
投稿日時: 2006-01-10 17:37
test.csとform1.cs(フォームクラス)があり、form1.csに公開メソッドにInit(string label)を用意します。
test.csでは、以下のようにしてform1の公開メソッドをコールしたいのですが、上手く呼び出せません。(コンパイルエラーになります。)
--------------------------------------
Form frmTest = new form1();

frmTest.Init("フォーム1");
frmTest.Show();
--------------------------------------

なお、「form1 frmTest = new form1();」のようにすれば上手くいくのですが、test.csは派生元クラスとして使用したいので、上記例のような形でユーザフォームクラスを呼び出したいと考えています。

上記例のようなフォームクラスの呼出しはダメなのでしょうか?
分かる方いれば、よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-10 17:46
引用:

Gunsさんの書き込み (2006-01-10 17:37) より:

上記例のようなフォームクラスの呼出しはダメなのでしょうか?
分かる方いれば、よろしくお願いします。


System.Windows.Forms.Form クラスは、
Guns さんが Form1 クラスに実装した Init メソッドを知らないからです。

引用:

test.csは派生元クラスとして使用したいので、


派生元クラスとして...? (^^;)

Form1 だけでなく、様々なフォームで Init を呼び出したいのであれば、
インターフェイス、ポリモーフィズムなどを勉強してみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2006-01-10 18:04
引用:

上記例のようなフォームクラスの呼出しはダメなのでしょうか?


WindowsFormを継承可能にしたいということでしたら、その目的は達成できるでしょう。
以下のページを読んでみてください。

MSDN Japan Home > MSDN Library Japan > Visual Studio .NET による開発 > Windows アプリケーションの作成 > Windows フォーム
Visual Studio
Windows フォームの継承
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbconFormInheritance.asp?frame=true
リンクをたどって多くの情報を読むことになるかと思います。
継承についてはもっと簡単に説明されているサイトもありますので、検索することをお勧めします。


ちなみに私は、Formの継承はあまりお勧めしません。
必要であるなら完全に否定するものではありませんが、必要ではないなら他の手段も検討すべきでしょう。


_________________
たつごろー
codeseek
こみゅぷらす
extream
ベテラン
会議室デビュー日: 2005/12/26
投稿数: 83
投稿日時: 2006-01-10 18:13
みなさん、回答ありがとうございます。

まずは、教えていただいたサイトなどで勉強してみます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-10 18:57
引用:

Gunsさんの書き込み (2006-01-10 18:13) より:

まずは、教えていただいたサイトなどで勉強してみます。


インターフェイスについてです。

コード:

    public interface IInit : System.IDisposable {
        void Init();
    }


上記のように、Init メソッドが存在していることを示すインターフェイスをどこかで定義します。

コード:

    public class Form1 : System.Windows.Forms.Form, IInit {
        // 省略
    }


上記のように、各フォームにこの IInit インターフェイスを実装します。

コード:

    using (IInit init = new Form1()) {
        init.Init();
    }


Test.cs で IInit インターフェイスを通じて Init メソッドを呼び出します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)