【发布时间】:2015-11-04 15:00:37
【问题描述】:
我正在 Winforms 中创建一个项目,该项目应该从 t 数组中获取值,将它们与我尚未声明的 C 变量中的值相加,并在按下 FIFO 时在 tf 文本框数组中显示结果按钮。我的问题是我似乎无法正确执行此操作。我一直在尝试定期添加等等,以确保 ti 或 t 的内容显示在 tf 上,但似乎根本没有任何效果。我的主要问题是程序只取数组的第一个值,而不是全部取走。我将在下面发布我的代码。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
foreach (Control c in this.Controls)
{
if (c.GetType() == typeof(TextBox))
{
((TextBox)(c)).Text = "0";
}
}
}
private void fifo_Click(object sender, EventArgs e)
{
int c = 0;
int[] ti = { 0, 1, 2, 3, 4, 5 };
ti[0] = Convert.ToInt32(tiA.Text);
ti[1] = Convert.ToInt32(tiB.Text);
ti[2] = Convert.ToInt32(tiC.Text);
ti[3] = Convert.ToInt32(tiD.Text);
ti[4] = Convert.ToInt32(tiE.Text);
ti[5] = Convert.ToInt32(tiF.Text);
int[] t = { 0, 1, 2, 3, 4, 5 };
t[0] = Convert.ToInt32(ta.Text);
t[1] = Convert.ToInt32(tb.Text);
t[2] = Convert.ToInt32(tc.Text);
t[3] = Convert.ToInt32(td.Text);
t[4] = Convert.ToInt32(te.Text);
t[5] = Convert.ToInt32(tf.Text);
int[] tf1 = { 0, 1, 2, 3, 4, 5 };
tf1[0] = Convert.ToInt32(tfA.Text);
tf1[1] = Convert.ToInt32(tfB.Text);
tf1[2] = Convert.ToInt32(tfC.Text);
tf1[3] = Convert.ToInt32(tfD.Text);
tf1[4] = Convert.ToInt32(tfE.Text);
tf1[5] = Convert.ToInt32(tfF.Text);
for (int i = 0; i <= 0; i++)
{
ti[i] = tf1[i] + 5;
}
}
}
【问题讨论】:
-
for (int i = 0; i <= 0; i++) -
首先,你的 for 循环永远不会执行它的代码块。您正在尝试循环直到
i<=0,这就是您将其初始化为int i = 0;。作为旁注,您应该查看int.TryParse(),而不是使用Convert.ToInt32(),以确保您始终拥有一个有效值。如果用户输入的不是数字值,您现在的方式可能会引发异常。 -
将 for 循环更改为: for (int i = 0; i
-
看循环很好,但函数实际上并没有做任何事情。在写入任何地方之前,对数组的更改超出范围。
-
@Matt 我假设(尽管我可能大错特错)他要么消除了多余的膨胀以专注于核心问题,要么他在调试器中观察它。不过,您是对的,因为该函数实际上除了消耗 CPU 周期之外什么都不做,而且考虑到循环代码块从不执行,这方面的作用并不大。 =)