我對 c# 非常陌生,所以我對以下問題有一點困難。
以下是我的以下代碼
int access = 1;
int onlineVideos = 2;
int personalTrainer = 20;
int dietConsultation = 20;
int extras = 0;
if (checkBox1.Checked)
{
extras = access;
}
else if (checkBox2.Checked)
{
extras = onlineVideos;
}
else if (checkBox3.Checked)
{
extras = personalTrainer;
}
else if (checkBox4.Checked)
{
extras = dietConsultation;
}
textBox6.Text = extras.ToString();
我希望能夠輕松地將所有選中的框的總和相加,然后將它們列印到文本框中。
uj5u.com熱心網友回復:
根據您的描述,您不需要多個 if/else 子句,而只需要一個方法,該方法將檢查狀態的復選框的所有值相加。像這樣的東西:
foreach (Control c in this.Controls)
{
if((c is CheckBox) && ((CheckBox) c).Checked)
{
yourdecimal = Convert.ToDecimal(c.Text);
}
}
確切的方法取決于您的確切代碼,因此可能需要更改“this.Controls”作為示例。或者,如果存在非數值等,可能需要添加 try/catch 以防止出現問題。這只是一種方法。如果您需要進一步的幫助,請添加您的源代碼。
uj5u.com熱心網友回復:
您可以借助三元運算子簡化代碼:
int extras = (checkBox1.Checked ? 0 : access)
(checkBox2.Checked ? 0 : onLineVideos)
(checkBox3.Checked ? 0 : personalTrainer)
(checkBox4.Checked ? 0 : dietConsultation);
更好的選擇是將資料(期權的價格)和邏輯分開:
using System.Linq;
...
// Data: option and its price
var prices = new (CheckBox option, int price)[] {
(checkBox1, 1),
(checkBox2, 2),
(checkBox3, 20),
(checkBox4, 20),
};
...
// Logic: we sum all checked options
var extras = prices.Sum(item => item.option.Checked ? item.price : 0);
uj5u.com熱心網友回復:
Dictionary作為@jonas-metzler 解決方案的替代方案,您可以在復選框及其值之間創建一種映射表( )。如果您將Text屬性Checkbox用于其他用途,或者將其用作 WinForms 之外的類似問題的更通用解決方案,則可以使用此功能。
var checkboxValues = new Dictionary<Checkbox, int>
{
{ checkBox1, access },
{ checkBox2, onlineVideos },
{ checkBox3, personalTrainer },
{ checkBox4, dietConsultation },
};
var sum = checkboxValues.Where(kvPair => kvPair.Key.Checked)
.Sum(kvPair => kvPair.Value);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/460630.html
上一篇:System.Reflection.ReflectionTypeLoadException:'無法加載一種或多種請求的型別。無法加載檔案或程式集
下一篇:如何從檔案中獲取字符資訊?
