我有一个表单,我通过各种对象收集用户输入:txtBoxes,radioButtons,cmboBoxes甚至numericUpDown。必须存储这些值,因此我假设List< >因为我们不知道我们将输入多少“项目”,所以比阵列更适合这种情况。我打算实施Lists< >对于每个领域。
我想...填写表单,单击Enter Next,其中所有字段都存储其值,然后清除所有字段。再次填写表格x次并最终显示所有...但我在逻辑中遗漏了一些我无法指出的东西。
但现在让我感到困惑的是我的foreach循环中的'Name'错误。它说它是一个局部变量,它不能在这里使用它,它将改变它在父/当前范围的其他地方的含义。但这就是为什么我将它声明为一个字段,假设所有对变量的调用都可以使用它。我也在这里搜索过,发现Question about List scope in C#,但不确定如何应用它。
以下代码来自我的第一个txtBox。请原谅我的过度评论。这是我'草绘',为我自己做提醒。我知道这个问题很容易,我只是没有看到它..
namespace Employees
{
public partial class Employees : Form
{
public Employees()
{ //field declarations.
string Name; //'declared but never used?'
InitializeComponent();
}
private void txtInputName_TextChanged(object sender, EventArgs e)
{ //#1.) *********************************
Name = txtInputName.Text;
List<string> InputNameList = new List<string>();
//InputNameList.Add(Name);
//List for holding name input from txtInputName.Text
//will need ForLoop for consecutive entries.
for (int index = 0; index < InputNameList.Count; index++)
{
InputNameList.Add(Name); //but, it's used here.
MessageBox.Show("success");//Fill List
txtInputName.Clear();
txtInputName.Focus();
} //endFor
//for (int index = 0; index < InputNameList.Count; index++); //Display List
//{
// lstBoxOut.Items.Add(Name);
//} //displays as before.
foreach(string Name in InputNameList) //error on thisName.
{
lstBoxOut.Items.Add(Name);
} //end ForEach
} //end txtInputName
答案 0 :(得分:0)
问题与列表本身无关,而与Name
变量有关。
您在构造函数中将其声明为局部变量,但从不使用它。然后,您尝试在txtInputName_TextChanged
的开头使用它而不声明它。然后,您将在foreach
循环中再次声明它。
我建议:
更改方法的开头以声明变量:
string name = txtInputName.Text;
更改foreach循环以声明不同的变量:
foreach (string listName in inputNameList)
接下来,您需要弄清楚中间的for
循环实际上要做什么。如果列表为空,那么它什么都不做。如果它的不为空,那么循环将永远继续。