読者です 読者をやめる 読者になる 読者になる

C# Form1.Desiners.cs 読み込み

https://support.microsoft.com/ja-jp/kb/304430

 

コピペ推奨。以上w

 

要するに、

Form1.Desiners.cs が デザインのデータだから

新しいプロジェクト作ってコピペしろ・・・と

まぁ、Form1.csはプログラムのファイルだし

Program.cs はmain()メソッドファイルだから当然っちゃ当然。

 

 

C#で電卓を作りました!

 

ここの電卓は参考になりますね。

        //  変数の定義

        double sum = new double[2];               //  演算対象の値
        double
sumBack = new double[2];           //  sumの値をバックアップ
        double[] sumFullBack = new double[15];      //  sumの値を入力毎バックアップ
        double smallNumberLevel = 1;                //  少数の位置の計算
        double ans = 0;                             //  演算結果
        sbyte sumflug = 0;                          //  sumの配列値
        sbyte ope;                                  //  演算子の番号
        sbyte smallZero = 0;                        //  小数点以下0の数 (0以外を入力すると、初期化)
        byte smallNumberPlace = 0;                  //  小数の位置
        bool ansFlug = false;                       //  演算結果を表示するフラグ(=を使う場面)
        bool ansDispFlug = false;                   //  演算結果を表示するフラグ(=を使わない場面)
        bool ansOneClickFlug = false;               //  演算結果を表示するフラグ(√など、ワンクリックで答えが表示される場面)
        bool calButtonClickFlug = false;            //  数字ボタンを押しているフラグ
        bool icolTrace = false;                     //  =を押した痕跡を記憶する
        bool divisionErrorFlug = false;             //  0で割った場合に表示するエラー
        bool continueOpeFlug = false;               //  =を押した後、演算子を入力しているフラグ
        bool smallNumberFlug = false;               //  少数フラグ(.を使う)

 

最初に必要な変数を作る。

 

ボタンごとの処理

 private void icol_Click(object sender, EventArgs e)
        {
            switch (ope)
            {
                case 1:
                    ans = sum[0] + sum[1];
                    if (!calButtonClickFlug)
                        ans = sum[0] + sumBack[1];
                    break;
                case 2:
                    ans = sum[0] - sum[1];
                    if (!calButtonClickFlug)
                        ans = sum[0] - sumBack[1];
                    break;
                case 3:
                    ans = sum[0] * sum[1];
                    if (!calButtonClickFlug)
                        ans = sum[0] * sumBack[1];
                    break;
                case 4:
                    if (sum[1] != 0)
                        ans = sum[0] / sum[1];
                    else
                    {
                        if (!calButtonClickFlug)
                            ans = sum[0] / sumBack[1];
                        else
                            divisionErrorFlug = true;
                    }
                    break;
            }
            ansFlug = true;
            sum[0] = ans;
            smallNumberPlace = 0;
            //sum[1] = 0;
            icolTrace = true;
        }

        //  =を使わない連続演算時の処理

        void Operation()
        {
            //  少数のクリア

            smallNumberPlace = 0;
            smallNumberLevel = 1;
            smallNumberFlug = false;

            //  数字を入力した状態かつ、=が押されていない状態の場合、左辺に、演算結果を代入する

            if (calButtonClickFlug && !icolTrace)
            {
                switch (ope)
                {
                    case 1:
                        sum[0] = sum[0] + sum[1];
                        break;
                    case 2:
                        sum[0] = sum[0] - sum[1];
                        break;
                    case 3:
                        sum[0] = sum[0] * sum[1];
                        break;
                    case 4:
                        if (sum[1] != 0)
                        {
                            sum[0] = sum[0] / sum[1];
                        }
                        else
                        {
                            divisionErrorFlug = true;
                        }
                        break;
                   
                }
            }
        }

        //  少数の桁数を求める

        double SmallNumberOperation()
        {
            return smallNumberLevel *= 10;
        }

        //  オールクリア

        void SumClear()
        {
            sum[0] = 0;
            sum[1] = 0;
            ans = 0;
            sumflug = 0;
            ope = 0;
            ansFlug = false;
            ansDispFlug = false;
            ansOneClickFlug = false;
            calButtonClickFlug = false;
            icolTrace = false;
            divisionErrorFlug = false;
            smallNumberFlug = false;
            smallNumberLevel = 1;
            smallNumberPlace = 0;
            smallZero = 0;
        }

        //  少数ボタンをクリック

        private void syosu_Click(object sender, EventArgs e)
        {
            smallNumberFlug = true;
        }

        //  Cをクリック

        private void Clear_Click(object sender, EventArgs e)
        {
            SumClear();
        }

        //  CEをクリック

        private void ClearEnd_Click(object sender, EventArgs e)
        {
            if (!icolTrace)
            {
                if (sumflug == 1)
                {
                    sum[1] = 0;
                }
                else
                {
                    sum[0] = 0;
                    sumflug = 0;
                }
            }
            else
            {
                sum[0] = sumBack[0];
                sum[1] = 0;
                icolTrace = false;
                ansFlug = false;
            }
            smallZero = 0;
            smallNumberPlace = 0;
        }

        //  Backをクリック

        private void Back_Click(object sender, EventArgs e)
        {

            //  各桁の値を左辺または右辺に代入

            if (smallNumberPlace < 15)
            {
                if (smallNumberPlace > 1)
                {
                    smallNumberPlace--;
                    sum[sumflug] = sumFullBack[smallNumberPlace - 1];
                }
                else
                {
                    sum[sumflug] = 0;
                    smallNumberPlace = 0;
                }
            }
            smallZero = 0;
        }

        //  +/-をクリック

        private void plusOrMinus_Click(object sender, EventArgs e)
        {
            sum[sumflug] = sum[sumflug] - (sum[sumflug] * 2);
        }
    }
}

 

 

ボタンごとの処理。

それにしても、変数を増やすとコードの量は増えますね

 

 

流石にもう少し簡単なレベルじゃないとわかんないなぁ。

とはいえ、

 

変数で電卓は作れる・・・と