C# 如何使用单选按钮和复选框直接输出到文本框,而无需单击按钮

C# 如何使用单选按钮和复选框直接输出到文本框,而无需单击按钮,c#,winforms,C#,Winforms,我想知道当用户单击一系列单选按钮并单击复选框(e)后,如何将其输出到文本框,这些复选框位于表单上的各个分组框 任何帮助都将不胜感激,如果这个问题在过去已经得到了回答,请让我知道我已经搜索过了,但找不到类似的内容。 示例表单布局: 根据链接,您可以创建一个事件处理程序并将其绑定到所有事件。(解释约束力) 因此,每当表单中的任何值发生更改时,只调用一个函数。 然后,检查表单中每个组件的值并计算文本框的值。您需要为每个单选按钮创建一个事件处理程序,或者为所有单选按钮创建一个事件处理程序。这将取决于你想

我想知道当用户单击一系列
单选按钮
并单击
复选框
(e)后,如何将其输出到
文本框
,这些复选框位于
表单
上的各个
分组框

任何帮助都将不胜感激,如果这个问题在过去已经得到了回答,请让我知道我已经搜索过了,但找不到类似的内容。

示例
表单
布局:


根据链接,您可以创建一个事件处理程序并将其绑定到所有事件。(解释约束力)

因此,每当表单中的任何值发生更改时,只调用一个函数。
然后,检查表单中每个组件的值并计算文本框的值。

您需要为每个单选按钮创建一个事件处理程序,或者为所有单选按钮创建一个事件处理程序。这将取决于你想要完成什么。对于单选按钮,您需要订阅
CheckedChanged
事件。然后在此事件中,您可以更改文本框

private void radioButtonChangeText_CheckedChanged(object sender, EventArgs e)
{
    //Code here to change text box or call sub
    textBox.Text = "Hello world";
}

右键单击单选按钮,转到属性,然后单击“事件”(闪电符号)。那里有一个叫做“CheckedChanged”的事件。双击它旁边的单元格以生成事件方法。 它会生成这样的代码

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        MessageBox.Show("hi there");
    }
你应该可以把任何你想要的东西放进去。假设你想显示隐藏文本框,你可以在那里做

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        setCheckBoxValue();   
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        setCheckBoxValue();
    }

    private void setCheckBoxValue()
    {
        int finalPrice = 0;
        if (radioButton1.Checked == true)
        {
            finalPrice = finalPrice + 75;
        }
        else if (radioButton2.Checked == true)
        {
            finalPrice = finalPrice + 87;
        }

        textBox1.Text = finalPrice.ToString("C");            
    }

我不擅长追逐图片,尤其是代码,因为图片对任何人都没有帮助。无论如何,下次请不要这样做

首先,对于所有收音机和复选框(radChocolate、radVanilla、…radSmall、…chkChocoChips,…),双击并填充选中的事件,例如:

private void radChocolate_CheckedChanged(object sender, EventArgs e)
{
    CalculatePrice();
}
private void radVanilla_CheckedChanged(object sender, EventArgs e)
{
    CalculatePrice();
}
// Do the same for other radio and checkboxes
然后添加CalculatePrice代码(价格是任意的):


这将满足您的需要。

当您选中RadioBox和复选框时,会触发事件,您可以使用它们,但您的问题并不清楚。控件有事件,如“更改”和“选中”等。从概念上讲,这些事件与您似乎已经知道如何使用的按钮的单击事件没有什么不同。订阅适当的事件并执行通常使用按钮执行的操作。您的应用程序是WPF还是Windows窗体?如果是,则单选按钮具有RadioButton_Checked事件。你可以试着在那里写代码。@CetinBasoz这是我需要的,这是我到目前为止所做的,我还不清楚,帮帮我。我不知道我是否做对了。winforms与JavaScript有什么关系?或者自动回邮?我的错,没有读到它与WindowsForms有关。编辑了我的答案。@Nishant请阅读上面的回复,我已经发布了问题的链接以及到目前为止我所做的事情。更新了我的答案。你能调试并判断你是否在设置文本框值或计算值时遇到问题吗?@Nishant我以后必须阅读更多关于绑定多事件处理程序的内容,谢谢你的帮助。这是我需要做的。这是我做的。对不起,我查过了。我觉得你的代码很好。只是,使用if(chocoletchips&&…)类型的代码将使其冗余。这里有一个想法,创建一个seporate方法someMethod();重新计算每一次。从每个事件内部调用该方法。谢谢,我会尝试一下,如果遇到任何问题,我会报告。我使用if语句来了解我应该如何进行。这似乎是迄今为止最好的答案。我对代码做了一点修改,它工作得完美无缺。这是我修改的部分。我被要求为这个lol使用双精度数据类型,尽管十进制似乎更合适。@Tim,当它是金钱时,我认为使用双精度是个坏主意。Double不精确,decimal不精确。
private void CalculatePrice()
{
    decimal price = 0M;
    if (radChocolate.Checked) price += 75M;
    if (radVanilla.Checked) price += 65M;
    if (radStrawberry.Checked) price += 55M;

    if (radSmall.Checked) price += 20M;
    if (radLarge.Checked) price += 30M;

    if (chkChocoChips.Checked) price += 5M;
    if (chkCookieCandy.Checked) price += 4M;
    if (chkNuts.Checked) price += 3M;
    if (chkFreshFruits.Checked) price += 2M;

    txtPrice.Text = price.ToString("C");
}