[英]How to add value to array from textBox? WinForms C#
我想將值添加到數組。 這些值來自textBoxes。 當我單擊“計算”按鈕時,它應該顯示每個數字,但是不會發生。
誰能解釋我發生了什么事?
碼:
//Declaração das Variáveis/Arrays
float[] Valores = new float[5];
int Limite = 0;
float Valor0, Valor1, Valor2, Valor3, Valor4;
//Introduzir Valores
private void TextBoxIntroduzirValores_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (Limite >= 5)
{
MessageBox.Show("Só pode introduzir 5 números!");
TextBoxIntroduzirValores.Text = "";
}
else
{
for (int i = 0; i < 4; i++)
{
float ValorTemp = Convert.ToSingle(
TextBoxIntroduzirValores.Text);
Valores[i] = ValorTemp;
}
ListaValores.Items.Add(TextBoxIntroduzirValores.Text);
TextBoxIntroduzirValores.Text = "";
Limite = Limite + 1;
}
}
}
//Introduzir Valores
private void TextBoxIntroduzirValores_TextChanged(object sender, EventArgs e)
{
if (System.Text.RegularExpressions.Regex.IsMatch(
TextBoxIntroduzirValores.Text, "[^0-9]"))
{
MessageBox.Show("Introduza apenas números por favor!");
TextBoxIntroduzirValores.Text = TextBoxIntroduzirValores.Text.Remove(
TextBoxIntroduzirValores.Text.Length - 1);
}
}
//Botão Calcular
private void Calcular_Click(object sender, EventArgs e)
{
Valor0 = Valores[0];
Valor1 = Valores[1];
Valor2 = Valores[2];
Valor3 = Valores[3];
Valor4 = Valores[4];
string Valor00 = Convert.ToString(Valor0);
string Valor11 = Convert.ToString(Valor1);
string Valor22 = Convert.ToString(Valor2);
string Valor33 = Convert.ToString(Valor3);
string Valor44 = Convert.ToString(Valor4);
TextBoxMaximo.Text = Valor00 + Valor11 + Valor22 + Valor33 + Valor44;
}
在設計視圖中的WinForm:
在運行時:
如您所見,它沒有正確顯示數組
我不知道我是否真的了解你想要什么...
變量:
float[] values = new float[5];
int num = 0;
假設您從文本框tbValues
輸入5個值
private void tbValues_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter && num < 5 && !(string.IsNullorEmpty(tbValues.text)))
{
values[num] = int.Parse(tbValues.Text);
listValues.Items.Add(values[num].ToString());
num ++;
}
else
...
tbValues.Clear();
}
然后在Buttun Calc btnCalc
private void btnCalc_Click(object sender, EventArgs e)
{
tbMax.Text = values.Max().ToString();
tbMin.Text = values.Min().ToString();
float sum = values.Sum();
tbSum.Text = sum.Tosting();
float average = sum / values.Length;
tbAverage.Text = average.ToString();
}
我看到您可能需要在代碼中更改的幾件事。
將項目添加到ListBox
:
您應該使用要填充的數組的Length
屬性作為條件。 如果您以后決定更改最大值數,則這將減少更新代碼的位數。
您當前正在使用循環將相同的數字添加到數組的前四個索引中。 相反,您可以僅使用Limite
作為將項目添加到的索引。
因此該方法如下所示:
private void TextBoxIntroduzirValores_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (Limite >= Valores.Length)
{
MessageBox.Show($"You can only enter {Valores.Length} numbers!");
TextBoxIntroduzirValores.Text = "";
}
else
{
// Add item to array
Valores[Limite] = Convert.ToSingle(TextBoxIntroduzirValores.Text);
// Increment index
Limite = Limite + 1;
// Add item to listbox
ListaValores.Items.Add(TextBoxIntroduzirValores.Text);
// Clear textbox
TextBoxIntroduzirValores.Text = "";
}
}
}
同樣,在計算結果時,可以在存儲值的數組上使用System.Linq
擴展方法:
private void Calcular_Click(object sender, EventArgs e)
{
// You can calculate values using Sytem.Linq extension methods
txtMin.Text = Valores.Min().ToString();
txtMax.Text = Valores.Max().ToString();
txtAvg.Text = Valores.Average().ToString();
txtTotal.Text = Valores.Sum().ToString();
}
或者,您可以長期計算這些值。 為此,請使用一些默認值創建變量。 對於默認的Min
,我們使用可能的最大值。 然后,當我們遍歷數組中的每個項目時,我們將查看該項目是否小於Min
,如果是,則使用此新值更新Min
。 同樣,我們使用盡可能小的數字作為Max
的默認值。 這樣可以確保這些項目在循環結束時是准確的。
對於Total
,我們將值從0
開始,然后遍歷該數組時將數組中的每個項目設置為Total
。 對於Average
,我們只將Total
除以數組中的項目數(這是Length
屬性):
private void Calcular_Click(object sender, EventArgs e)
{
// Or you can do it the long way. First start with default values:
float min = Single.MaxValue;
float max = Single.MinValue;
float total = 0;
// Then go through each item in the array
// and update the values above if necessary
foreach (float item in Valores)
{
if (item < min) min = item;
if (item > max) max = item;
total = total + item;
}
// Calculate average last since we need the total first
float avg = total / Valores.Length;
// Update the textboxes with these values:
txtMin.Text = min.ToString();
txtMax.Text = max.ToString();
txtAvg.Text = avg.ToString();
txtTotal.Text = total.ToString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.