1

私は初心者のプログラマーです。という名前GravCalcのフォーム クラスから継承するという名前のクラスがありMainます。内部には、さまざまなコントロールを扱う多数のメソッドがあります。コード例を次に示します。

public class GravCalc : Main
    {
        private static float engineer = 1.0f;

        public void ShowEngineer()
        {
            GravCalc.engineer = 1.1f;
            gravEngineerLabel.Visible = true;
            gravEngineerLine.Visible = true;
        }
    };

これらのメソッドとクラスを静的にしますが、静的ではないため、コントロールから継承しFormたり、コントロールを操作したりすることはできません。

この場合、クラスのインスタンスを作成する必要があります。だから授業中に書きGravCalc myGravCalc = new GravCalc();ました。Main

すべてがコンパイルされていますが、プログラムを開始すると、スタック フレームの最大数に達するまで、クラスの複数のインスタンスが作成されるため、System.StackOverflowException発生します。

私は何を間違っていますか?

編集

私がやりたかったことは、1 つのパネルに関するすべてのメソッドと変数を 1 つのクラスにグループ化することです。静的にできれば完璧です。コントロールにアクセスできるように継承させましたMainが、これは私が望んでいたものではないことに気づきました。

コントロールを操作できるクラスを作成する可能性はありますか? それとも、その Form クラスに何かを投げるべきですか?

4

2 に答える 2

5

GravCalc IS Main... したがって、Main で GravCalc を作成すると、Main が再度作成され、それが Main を再度作成し、最終的にはスタックが不足します。

あなたがしたいことは、元の Main が作成された場所を見つけて GravCalc に置き換え、new GravCalcMain から取り出します。

于 2013-06-03T22:19:14.923 に答える