0

それで、私はしばらくこれに取り組んでいますが、電卓に最後のことをさせることができません。

わかりましたありがとう!

イコール ボタンまたは Tan、Sin、Cos、または Mod ボタンを押した後、電卓に新しい数値を取得させたいと思います。基本的に、答えがまだそこにあるにもかかわらず、テキストボックスに何もないかのように。現在、すべての番号が残り、新しい番号が末尾に追加されます。私はこれが起こることを望んでいません。

計算後、数値ボタンを押すと、画面がクリアされ、新しい数値が新たに追加されます。以下は、これまでの私のコードです。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    Double FirstNumber;
    string mathOperator = "";

    private void AddButton_Click(object sender, EventArgs e)
    {
        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        mathOperator = "+";

        DisplayTextBox.Text = "";
        DisplayTextBox.Focus();

    }
    private void EqualButton_Click(object sender, EventArgs e)
    {
        Double SecondNumber;
        SecondNumber = Convert.ToDouble(DisplayTextBox.Text);

        switch (mathOperator)
        {
            case "+":
                DisplayTextBox.Text = (FirstNumber + SecondNumber).ToString();
                break;
            case "-":
                DisplayTextBox.Text = (FirstNumber - SecondNumber).ToString();
                break;
            case "*":
                DisplayTextBox.Text = (FirstNumber * SecondNumber).ToString();
                break;
            case "/":
                DisplayTextBox.Text = (FirstNumber / SecondNumber).ToString();
                break;
            default:
                break;
        }
    }

    private void button12_Click(object sender, EventArgs e)
    {
        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        FirstNumber *= -1;
        DisplayTextBox.Text = FirstNumber.ToString();

    }

    private void ButtonMinus_Click(object sender, EventArgs e)
    {

        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        mathOperator = "-";

        DisplayTextBox.Text = "";
        DisplayTextBox.Focus();

    }

    private void ButtonMultiply_Click(object sender, EventArgs e)
    {

        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        mathOperator = "*";

        DisplayTextBox.Text = "";
        DisplayTextBox.Focus();

    }

    private void ButtonDivide_Click(object sender, EventArgs e)
    {

        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        mathOperator = "/";

        DisplayTextBox.Text = "";
        DisplayTextBox.Focus();

    }

    private void ButtonMod_Click(object sender, EventArgs e)
    {
        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        DisplayTextBox.Text = Math.Tan(FirstNumber).ToString();

    }

    private void Button1_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "1";
    }

    private void Button2_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "2";
    }

    private void Button3_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "3";
    }

    private void Button4_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "4";
    }

    private void Button5_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "5";
    }

    private void Button6_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "6";
    }

    private void Button7_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "7";
    }

    private void Button8_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "8";
    }

    private void Button9_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = DisplayTextBox.Text + "9";
    }

    private void ButtonClear_Click(object sender, EventArgs e)
    {
        DisplayTextBox.Text = "";
        mathOperator = "";
    }

    private void ButtonOff_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void ButtonTan_Click(object sender, EventArgs e)
    {
        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        DisplayTextBox.Text = Math.Tan(FirstNumber).ToString();
    }

    private void ButtonSin_Click(object sender, EventArgs e)
    {
        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        DisplayTextBox.Text = Math.Sin(FirstNumber).ToString();

    }

    private void ButtonCos_Click(object sender, EventArgs e)
    {
        FirstNumber = Convert.ToDouble(DisplayTextBox.Text);
        DisplayTextBox.Text = Math.Cos(FirstNumber).ToString();

    }

    private void Button0_Click(object sender, EventArgs e)
    {
        if (DisplayTextBox.Text.Length >= 1)
        {
            DisplayTextBox.Text = DisplayTextBox.Text + "0";
        }
        else
        {
            return;
        }
    }

    private void DecimalButton_Click(object sender, EventArgs e)
    {
        if (DisplayTextBox.Text.Contains("."))
        {
            return;
        }
        else
        {
            DisplayTextBox.Text = DisplayTextBox.Text + ".";
        }
    }
}
4

5 に答える 5

3

次のように、操作が完了したかどうかのフラグを表すブール変数をクラスに追加します。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    Double FirstNumber;
    string mathOperator = "";
    bool operationJustCompleted = false;

false最初は、電卓が最初に作成されたときに何も起こらなかったため、値は になります。

ここで、等号ボタン イベント ハンドラーの最後で、次のようにフラグを true に設定します。

private void EqualButton_Click(object sender, EventArgs e)
{
    // Logic for calculation

    operationJustCompleted = true;
}

最後に、数字ボタンのイベント ハンドラーで、フラグが true かどうかを確認しますoperationJustCompleted。true の場合は、テキストをクリアし、操作が完了したばかりのフラグを にリセットしfalseます。このような:

private void Button1_Click(object sender, EventArgs e)
{
    if(operationJustCompleted)
    {
        DisplayTextBox.Text = String.Empty;
        operationJustCompleted = false;
    }
    DisplayTextBox.Text = DisplayTextBox.Text + "1";
}
于 2013-10-31T15:48:01.550 に答える
0

簡単なレビューに基づいて、電卓の状態を追跡する変数を導入し、「等しい」ボタンが押されたときに状態を計算値に設定する必要があるようです。次に、数値ボタン (0 ~ 9) で状態変数を確認し、表示テキストに追加または置換する必要があります。

于 2013-10-31T15:45:39.920 に答える
0

このグローバル変数を作成...

private bool equationComplete = false;

これを Equals ボタンの最後に追加します...

equationComplete = true;

これを各数字ボタンのクリックの先頭に追加します...

if (equationComplete) DisplayTextBox.Text = "";

これを各数字ボタン クリック イベント ハンドラの最後に追加します...

equationComplete = false;
于 2013-10-31T15:47:15.717 に答える
0

デビッド・アルノが言うように、次のようなものです:

    private void EqualButton_Click(object sender, EventArgs e)
    {
        ClearDisplayBeforeNextTextEntry = true;
    }

    private void Button1_Click(object sender, EventArgs e)
    {
        // New code
        ClearText();
        // Old code
        DisplayTextBox.Text = DisplayTextBox.Text + "1";
    }

    // Same for all other number buttons as above

    private void ClearText()
    {
        if (ClearDisplayBeforeNextTextEntry)
        {
            DisplayTextBox.Text = "";
            ClearDisplayBeforeNextTextEntry = false;
        }
    }
于 2013-10-31T15:48:44.823 に答える