2010-10-26 120 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注释,但没有必要的声誉呢。)