0

Windowsフォームで作業していて、問題に遭遇しました。ボタンを押すと、Form2というフォームが開き、Form1が非表示になります..しかし、問題は、整数変数をForm1からForm2に継承する必要があることですが、できませんそれを行う方法を理解してください...クラス Form2 Inherit From Form1 を作成しようとしましたが、Form2 にすべてのコントロール (テキストボックス、ラベルなど) が含まれるようになりました。それで、これを行う正しい方法は何ですか?Form2 を間違って作成してしまった...

フォームクラスの書き方は次のとおりです。

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
{

ご清聴ありがとうございました!

4

1 に答える 1

0

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

public ref class Form2 : public Form1 
{ 

あなたの場合、Form1 は既に System.Windows.Forms.Form を継承しており、Form2 が Form1 を継承する場合は自動的に System.Windows.Forms.Form 型になるため、2 つのクラスから継承する必要はありません。

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

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 のインスタンスをパラメーターとして渡すことができます。

于 2012-04-20T12:55:18.113 に答える