2012-11-30 162 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之間的區別。 –

相關問題