我正在编写一个简单的WinForms应用程序来解析文本文件中的正确值,并且当它找到不正确的值时,会打开一个新表单,显示错误或缺失的值,用户可以输入正确的价值。我有问题,例如,我会故意在我的文本文件中放入两个不正确的值来检查,并且表单窗口在第一个错误打开后立即关闭,并且只保持打开以修复第二个错误。
foreach (string line in lines)
{
string[] items = line.Split('\t').ToArray();
for (int i = 0; i <custIndex.Count; i++)
{
int index = custIndex[i];
Globals.Code = items[index - 1].ToUpper();
if (!CountryList.ContainsKey(Globals.Code) && !StateList.ContainsKey(Globals.Code))
{
form2.textBox1.Text = Globals.Code;
form2.Show();//Shows form2 for user to enter correct input
}
}//inner for
}//inner for each
这是表单2代码(表单2在循环之前在方法的开头实例化):
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
//
private void button1_Click(object sender, EventArgs e)
{
Globals.Code = textBox2.Text;
this.Close();
}
private void Form2_Load(object sender, EventArgs e)
{
}
}
用户应该在输入Globals.Code的新值后按下按钮(我使用了一个全局变量,不确定这是否是最危险的做事方式)。之后表单关闭并返回到表单1.我认为表单2正在使用文本文件中的第一个错误值正确显示,但它会立即打开和关闭。有办法保持窗户打开吗?我很抱歉,如果这是令人费解的,我正在做很多Winforms,而且我并不是这方面的专家。
谢谢, 阿曼达
答案 0 :(得分:2)
您最好的选择可能是使用模态对话框,因此请将form2.Show
更改为form2.ShowDialog
。
但是,当使用具有类似循环的全局变量时,全局变量将仅在循环完成后将最后一个值放入表单中。如果使用ShowDialog方法,则调用将在该行处阻塞,直到用户关闭对话框。在那之后,您可以从文本框中读取值并对其执行操作。