2012-04-20 22 views
0

Windowsフォームで作業していて、問題が発生しました。ボタンを押すと、Form2というフォームが開き、Form1が非表示になります。 Form1からForm2に整数変数を継承するにはどうすればよいのか分かりません... Form2をForm1から継承しようとしましたが、Form2にはすべてのコントロール(テキストボックス、ラベルなど)があります。 )。では、これを行う正しい方法は何ですか? 私はForm2をincorectly作成しました...Visual Studioでフォーム間の変数を継承する方法

フォームクラスの記述方法は次のとおりです。

public ref class Form2 : public System::Windows::Forms::Form 
{ 

public ref class Form1 : public System::Windows::Forms::Form 
{ 

私は注意を払っため

public ref class Form2 : public System::Windows::Forms::Form, public Form1 
{ 

感謝を試してみました!

+0

コンストラクタについて知っていますか? (あなたはC++/CLI、btwを使用しています) –

+0

はい、私はコンストラクタが何であるか知っています、私はちょうど何を書いているのか分かりません。 – krishkule

答えて

0

2つの基本クラスから継承することはできません。あなたは1つのクラスから継承することができますが、必要なだけ多くのインターフェイスを実装します。このように試してみてください:

Form1がすでにSystem.Windows.Forms.Formを継承し、Form2のは、Form1を継承する場合には、自動的に型のSystem.Windows.Formsのもありますので、あなたが二つのクラスを継承する必要はありません、あなたの場合は
public ref class Form2 : public Form1 
{ 

。形。

両方のフォームに共通する必要がある変数が1つだけで、他には何もない場合、なぜ継承を使用したいのですか?継承は一般的にForm1のすべてのメンバー/プロパティ/メソッドがForm2で使用できるように基本クラスを拡張することを意味します。フォームはSystem.Windows.Forms.Formから継承する必要があるため、他の基本クラスは使用できません。おそらく、一般的な変数をプロパティとして定義する共通のInterfaceを使用し、両方のフォームがそのインターフェイスを実装する必要があると考えるべきでしょう。

public interface IMyForm 
{ 
    int MyValue { get; set; } 
} 

public class Form1 : System.Windows.Forms.Form, IMyForm 
{ 
    public int MyValue { get; set; } 
    ... 
} 

public class Form2 : System.Windows.Forms.Form, IMyForm 
{ 
    public int MyValue { get; set; } 
    ... 
} 

申し訳ありませんが、C#の構文については、私が意味するものが明確になることを願っています。あなたは今、例えば、パラメータとして、その一般的な性質を持つフォームを期待する方法を持っている場合は、簡単なことを行うことができます。

public void DoSomething(IMyForm form) 
{ 
    form.MyValue = 5; 
} 

そして、あなたは、パラメータとしてのForm1またはForm2のインスタンスを渡すことができます。

関連する問題