0

現在、C# で電卓型のフォームを作成しています。4 つのラジオボタン (加算、減算、マルチ、および div) と、2 つのテキスト ボックスの間にラベルがあります。ラベルは、選択したラジオボタンに応じて変化します (たとえば、追加ラジオボタンを選択した場合、ラベルは「+」と表示されます)。このコードで発生している問題:

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton1.Checked == true)
        {
            label3.Text = ("+");
        }
        else if (radioButton2.Checked == true)
        {
            label3.Text = ("-");

        }

        else if (radioButton3.Checked == true)
        {
            label3.Text = ("x");

        }

        else if (radioButton4.Checked == true)
        {
            label3.Text = ("/");
        }

    }

除算ボタンを選択すると、すべてのボタンを通過しない限りラベルが変更されず、他のラジオ ボタン (減算など) を選択すると、複数回試行するまでラベルが変更されません。最後の行を「else label3.text=("/");」に変更してみました ただし、エラーの順序以外は実際には何も変更されません。どんな助けでも大歓迎です!ありがとう :)

4

3 に答える 3

0

チェック済みボタンの確認方法を変更することができます。MrB のソリューションは機能しますが、選択コードを 1 つのブロックに保持したい場合 (現在のように)、すべてのラジオ ボタンに CheckedChanged イベントが次のようなものにサブスクライブされていることを確認してください。

private void RadioButtonCheckedChanged(object sender, EventArgs e)
{
    var radioButton = (RadioButton)sender;

    if (radioButton.Checked)
    {
        switch (radioButton.Text)
        {
            case "Add":
                label3.Text = "+";
                break;
            case "Subtract":
                label3.Text = "-";
                break;
            case "Divison":
                label3.Text = "/";
                break;
        }
    }
}

RadioButton.Tagフィールドなど、自分にとって意味のある別のプロパティをオンにすることもできます。

コードが失敗する実際の理由に関しては、どの RadioButton のイベントが適切に設定されているかを確認し、正しくない結果を確認しないと理解するのは困難です。

于 2013-07-08T18:27:17.873 に答える