分组框内单选按钮的Text属性转换为十进制变量



我在试图找到一种方法来获取选中单选按钮的文本属性并保存在十进制变量中时遇到了问题。

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

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

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

有什么想法吗?

    // 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

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

在表单的加载事件处理程序中添加以下内容:

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

最新更新