我有1个标签和4个复选框。我想要做的是当选中一个复选框时我希望价格在文本框中增加或减少,具体取决于是否取消选中该复选框。我迷失在如何做到这一点上。
标签为TextBlock_Price
复选框如下:phScreenRepair, virusRemoval, hardwareRepInstall, softwareInstall
我的代码:
public float? MultipleServiceAdder()
{
if (phScreenRepair.Checked)
{
return 20.00f;
}
if (virusRemoval.Checked)
{
return 10.00f;
}
if (hardwareRepInstall.Checked)
{
return 10.00f;
}
if (softwareInstall.Checked)
{
return 5.00f;
}
textBlock_Price.Text = "$0.00";
return 0f;
}
答案 0 :(得分:0)
您可以订阅checkBox.CheckStateChanged事件并从那里更改标签或textBox的值。您也可以订阅checkBox.Click事件,但这会在每次点击时触发,但有一些点击,例如转移点击,可能无意引发事件。
例如:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
checkBox1.CheckStateChanged += CheckBox1_CheckStateChanged;
}
private void CheckBox1_CheckStateChanged(object sender, EventArgs e)
{
MessageBox.Show("Input Changed!");
}
}
}
答案 1 :(得分:0)
float x=0.00f;
if (phScreenRepair.Checked) x += 20.00f;
if (virusRemoval.Checked) x += 10.00f;
if (hardwareRepInstall.Checked) x += 10.00f;
if (softwareInstall.Checked) x += 5.00f;
textBlock_Price.Text = x.toString();
答案 2 :(得分:0)
试试这个,但我还没有测试过。 请在每个复选框的checkedchanged事件上调用此方法。
float max = 45.0f; //(20+10+10+5)
public float? MultipleServiceAdder()
{
float total;
total = max;
if (!phScreenRepair.Checked)
{
total = total - 20.00f;
}
if (!virusRemoval.Checked)
{
total = total - 10.00f;
}
if (!hardwareRepInstall.Checked)
{
total = total - 10.00f;
}
if (!softwareInstall.Checked)
{
total = total - 5.00f;
}
textBlock_Price.Text = total.ToString();
return total;
}