组框内的单选按钮的文本属性为十进制变量?

时间:2014-04-22 00:25:06

标签: c# winforms visual-studio-2012 radio-button decimal

我一直在努力寻找一种方法来获取已检查单选按钮的text属性并保存在十进制变量中。

目前有三个组合框,所有组合框都有3个单选按钮。

我需要从每个框中选中的单选按钮中取出text属性,并将其中两个保存为十进制,其中一个保存为Int16。

decimal variablename =组框中当前所选单选按钮的文本属性 int16变量名称=组框中当前所选单选按钮的文本属性

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

    // define a global variable
    decimal result = 0;

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        result = decimal.Parse(radioButton1.Text);
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        result = decimal.Parse(radioButton2.Text);
    }

    private void radioButton3_CheckedChanged(object sender, EventArgs e)
    {
        result = decimal.Parse(radioButton3.Text);
    }

确保您的radioButton文字为number,但不是character

答案 1 :(得分:0)

如果要添加或删除单选按钮,使用单独的处理程序会变得相当笨重且难以维护。所有这些的一个处理程序和一个简单的foreach将处理程序分配给每个单选按钮将使代码更加简化。此外,您应该始终检查是否选中了radiobutton,因为取消检查也会触发事件:

在表单的加载事件处理程序中添加:

foreach(GroupBox gb in this.Controls.OfType<GroupBox>())
}
    foreach(RadioButton rb in gb.Controls.OfType<RadioButton>())
    {
        rb.CheckedChanged += new System.EventHandler(radioButton_CheckedChanged);
    }
}

全局变量:

decimal result1 = 0;
decimal result2 = 0;
Int16 result3 = 0;

CheckedChanged处理程序:

private void radioButton_CheckedChanged(object sender, EventArgs e)
{
    RadioButton currentrb = (RadioButton)sender;
    if(currentrb.Checked)
    {
        switch(currentrb.Parent.Name)
        {
            case "GroupBox1":
                result1 = decimal.Parse(currentrb.Text);
                break;
            case "GroupBox2":
                result2 = decimal.Parse(currentrb.Text);
                break;
            case "GroupBox3":
                result3 = Int16.Parse(currentrb.Text);
                break;
        }
    }

}

有了这个,唯一需要注意的是你添加或删除GroupBox