2012-11-30 163 views
1

我正在写一个简单的WinForms应用程序,它为正确的值解析文本文件,并且当它发现一个不正确的值时,打开一个新窗体,显示不正确的窗体或缺少值,用户可以输入正确的值。例如,我有一个问题,例如,我会故意将两个不正确的值放在我的文本文件中进行检查,并且窗体窗口在打开第一个错误后立即关闭,并且只会修复第二个错误。Windows窗体在打开后不能保持打开状态

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) 
    { 



    } 




} 

假设用户输入用于全局新值后按下按钮.Code(我使用了一个全局变量,不知道这是否是最好的办法)。之后,窗体关闭并返回到窗体1.我认为窗体2正在正确显示,第一个错误值来自文本文件,但它立即打开和关闭。有没有办法让窗户打开?我很抱歉,如果这是错综复杂的,我正在做很多的WinForms,我不是真的在这个东西的专家。

感谢, 阿曼达

+1

您将需要使用ShowDialog()而不是Show(),以便循环不会继续运行并更改textBox1.Text属性。并且在循环之后做任何其他事情。就像关闭表格一样。 –

回答

2

你最好的选择可能是使用一个模态对话框,所以更改form2.Showform2.ShowDialog

但是,当像这样的循环使用全局变量时,全局变量只有在循环完成后才将最后一个值放入表单中。如果使用ShowDialog方法,则调用将在该行处阻塞,直到用户关闭对话框。在那之后,您可以从文本框中读取值并对其进行操作。

+0

谢谢,我真的不知道Show和ShowDialog之间的区别。 –

相关问题