2010-10-26 123 views
0

我已經得到了一個窗體,其中包含多個文本框,這些文本框是程序從中導入數據的文件路徑。目前,他們被檢查非零長度如下:C#文本框文件導入

//this code imports the files required by the user, as specified in the 
    //file path text boxes 
    private void btImport_Click(object sender, EventArgs e) 
    { 
     bool hasPath = false; 
     foreach (TextBox box in this.gbPaths.Controls.OfType<TextBox>().Where(tb => tb.Text.Length > 0)) 
     { 
      hasPath = true; 
      //import code 
     }//end foreach 

     if (!hasPath) 
     { 
      MessageBox.Show("You must enter at least one file path."); 
     }//end if 
    }//end import code 

什麼我不知道是我可以像更換//import code部分:

if(tb.Name = "txtAvF") then...

或相似,或做我必須在foreach循環之外做到這一點?提前致謝。讓我知道是否需要澄清任何事情。

+1

你能澄清你想要做什麼? 「txtAvF」的意義是什麼?進口過程的性質是什麼? – Ani 2010-10-26 03:25:21

+0

它將從幾個不同的來源導入,因爲需要比較實際信息和預測信息,並且此數據存儲在幾個不同的文件中。因此,當它通過循環時,它需要動態確定正在導入六個可能文件中的哪一個。它可能應該是一個開關盒,而不是一個if。我的錯。 – mispecialist 2010-10-26 03:45:29

回答

0

如果你想檢查是否文本框在窗體上的那些(我想你)中的一個,那麼你是==其中(taken from MSDN

the operator == tests for reference equality by determining if two references indicate the same object

因此,這是你在找什麼:

if(box == textBox1 && !string.IsNullOrEmpty(box.Text)) 
{ 
     // Import Textbox1 
} 
else if(box == textBox2 && !string.IsNullOrEmpty(box.Text)) 
{ 
     // Import Textbox2 
} 
else if (box == textBox3....) 
+0

感謝您輸入PostMan,但foreach語句只是通過表單上的每個文本框並確定它們是否不爲空;我現在需要做的是確定當前正在查詢哪個框的長度爲零,如果其中包含文本,請爲屬於該文本框的文件運行特定的導入代碼。問題在於,我不知道如何確定當前正在查詢哪個文本框。 – mispecialist 2010-10-26 03:48:23

+0

那麼代碼正在測試以查看'box'的引用是否與'txtAvf'具有相同的引用,是否想要更動態的東西? – PostMan 2010-10-26 05:02:04

+0

它需要做的是去: 測試箱1是空的嗎?沒有?然後導入文件1(存儲在文本框1中的路徑) 文本框2是否爲空?沒有?然後導入文件2 文本框3是否爲空?是?繼續... 文本框4是否爲空?沒有?然後導入文件4 依此類推,直到不再有文本框存在。 – mispecialist 2010-10-26 23:09:17

0

你應該在循環內部做到這一點。就像這樣:

if (box.Name == "txtAvF") 
    box.Text = "What you want"; 

但設置hasPath環內只適用於你的最後一個路徑的狀態。您還應該在循環內移動MessageBox代碼。

0

hasPath分配對我來說似乎是正確的;它被設置爲任何一個文本框,並且如果未在循環結束時設置,則會顯示一條消息。這與顯示的文字很好地押韻。將MessageBox調用移入循環會導致對話框永遠不會顯示(或顯示錯誤),至少在現在實現代碼時,由於OfType <>()。Where()保證迭代的所有文本框都具有至少有一些內容。

(我想補充一點,以@Xaqron註釋,但沒有必要的聲譽呢。)