2010-11-11 150 views
0

我希望它显示包含我在textbox5.text中输入的所有值的所有行。显示内容的问题

当我输入一个月的例子是10到textbox5,然后单击button4我想搜索为具有示例10的BirthMonth的enteries创建的文件,然后在label7中显示结果。

public void writetext() 
    { 

     using (TextWriter writer = File.AppendText("filename.txt")) 

     { 
     writer.WriteLine("First name, {0} Lastname, {1} Phone,{2} Day of birth,{3} Month of Birth{4}", textBox1.Text, textBox2.Text, maskedTextBox1.Text, textBox4.Text, textBox3.Text); 
     MessageBox.Show(String.Format("First Name,{0} Lastname, {1} Phone,{2} Day of birth,{3} Month of Birth{4}", textBox1.Text, textBox2.Text, maskedTextBox1.Text, textBox4.Text, textBox3.Text)); 
     } 
     } 
    public void reset() 
    { 
     textBox1.Text = ""; 
     textBox2.Text = ""; 
     textBox3.Text = ""; 
     textBox4.Text = ""; 
     maskedTextBox1.Text = ""; 
    } 

private void button4_Click(object sender, EventArgs e) 
    { 
     string[] lines = File.ReadAllLines("filename.txt"); 
    try{ 
     int month = Int32.Parse(textBox5.Text); 
     label7.Text = String.Format("Month of Birth {0}", lines[month]); 
     } 
    catch(Exception){ 
     label7.Text = "Invalid input"; 
    } 



    } 
    public void readfile() 
    { 
     string[] lines = File.ReadAllLines("filename.txt"); 
     label6.Text = String.Join(Environment.NewLine, lines); 

    } 




First name, 99999 Lastname, 87t8t8 Phone,999-9999 Day of birth,ug Month of Birthoi 
First name, 9898988 Lastname, 787877 Phone,999-9999 Day of birth,67 Month of Birth78 
First name, Lastname, Phone,588-8888 Day of birth, Month of Birth 
First name, ytyt Lastname, Phone, - Day of birth, Month of Birth 
First name, iuiu Lastname, Phone, - Day of birth, Month of Birth 
First name, 98989 Lastname, Phone, - Day of birth, Month of Birth 
First name, plplpl Lastname, Phone, - Day of birth, Month of Birth 
First name, okok Lastname, uihuhuh Phone,777-7777 Day of birth,54 Month of Birth76 
First name, 090909 Lastname, Phone, - Day of birth, Month of Birth 
First name, ijijij Lastname, Phone, - Day of birth, Month of Birth 
First name, kjkj Lastname, Phone, - Day of birth, Month of Birth 
First name, Lastname, Phone, - Day of birth, Month of Birth 
First name, Lastname, Phone, - Day of birth, Month of Birth 
First name, ygyg Lastname, Phone, - Day of birth, Month of Birth 
+0

我敢打赌,你可以是一个小更明确你想完成什么!我几乎可以猜到! – 2010-11-11 02:36:10

+0

我试图解释它好一点。但是当我在textbox5中输入一个数字时,我想要它,然后单击按钮4我想搜索为所有输入数字创建的文件,这些输入数字已经输入到textbox5中以显示在标签中7 – user770022 2010-11-11 02:41:18

回答

1

鉴于您编写文件的方式,您可以这样做。

例如:

string[] lines = { "Month of Birth1", "Month of Birth3" }; 
string[] matchingLines = lines.Where(x => x.Contains("Month of Birth1")).ToArray(); 

应用:

string[] lines = File.ReadAllLines("filename.txt"); 
int month = Int32.Parse(textBox5.Text); 
string matchText = string.Format("Month of Birth{0}", month); 
string[] matchingLines = lines.Where(x => x.Contains(matchText)).ToArray(); 
label7.Text = String.Join(Environment.NewLine, lines); 

你可能考虑CSV风格文件格式的,虽然,在那里你在一个预先只值 - 在您的文本文件中定义的顺序 - 标题列文本可能只是该文件的第一行。

+0

错误名称'lines '在当前上下文中不存在\t 错误名称“行”在当前上下文中不存在 – user770022 2010-11-11 02:50:02

+0

emmh我直接从您在问题中提供的示例中取出“行”,但我会将其添加到代码清晰。 – BrokenGlass 2010-11-11 02:51:48

0

把字符串数组列表,以使搜索更容易一点,然后搜索“出生月份” +月,并打印结果:

List<string> l = new List<string>(lines); 
     List<string> matchingLines = l.FindAll(x => x.Contains("Month of Birth" + month)); 
     string output = ""; 
     foreach (string line in matchingLines) 
     { 
      output += line + Environment.NewLine; 
     } 
     output.TrimEnd(Environment.NewLine); 
     label7.Text = output;