C# Form1.Desiners.cs 読み込み
https://support.microsoft.com/ja-jp/kb/304430
コピペ推奨。以上w
要するに、
Form1.Desiners.cs が デザインのデータだから
新しいプロジェクト作ってコピペしろ・・・と
まぁ、Form1.csはプログラムのファイルだし
Program.cs はmain()メソッドファイルだから当然っちゃ当然。
ここの電卓は参考になりますね。
// 変数の定義
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);
}
}
}
ボタンごとの処理。
それにしても、変数を増やすとコードの量は増えますね
流石にもう少し簡単なレベルじゃないとわかんないなぁ。
とはいえ、
変数で電卓は作れる・・・と