2014-05-19 31 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