2014-05-19 61 views
0

我想通過當前表單的文本進行列表過濾。 我有一個任務列表,我想在我的DataGrid上顯示只有用戶名屬性值與我的表單文本相同的任務。獲取當前表單的文本

我已經試過這樣:

foreach (Task a in tasks) 
     { 
      if(a.Username == ProgForm.ActiveForm.Text) 
      tdt.Rows.Add(a.Id, a.Name, a.Description, a.IsSolved, a.IsTested, a.Username); 

     } 

例如,如果我的窗體的文本爲「用戶1」,我希望我的DataGrid中,只顯示用戶名「用戶1」的任務。

如果我評論這行代碼

if(a.Username == ProgForm.ActiveForm.Text) 

數據網格將顯示所有任務,所以沒有問題存在。我不知道如何做過濾。

謝謝。

編輯:

找到了解決辦法:

替換此:

if(a.Username == ProgForm.ActiveForm.Text) 

有了這個:

if(a.Username == this.Text) 
+0

這兩個值在調試器中出現什麼?什麼是目前形式的「文本」? – BradleyDotNET

+0

a.Username是「user1」,但ProgForm.ActiveForm爲null。我不知道如何從當前表單中獲取文本。 – dsanatomy

回答

2

試試這個:

tasks 
    .Where(a => a.Username == this.Text) 
    .ForEach(a => 
     tdt.Rows.Add(a.Id, a.Name, a.Description, a.IsSolved, a.IsTested, a.Username) 
    ); 
+0

這會起作用,除非它與ActiveForm爲什麼爲空的問題無關。 – BradleyDotNET

+0

@BradleyDotNET是的,剛剛看到那條評論。 – DavidG

+0

如果我將實際值放在雙引號之間,過濾將會正確完成。我不確定使用ActiveForm是否正確。 – dsanatomy