2010-11-11 63 views
-2

我想按出生月份搜索一个文件,并在label7中显示结果。所以我想要的是将数字11输入到textbox5中,然后按下按钮4并将所有输入为11的输入显示在label7.text中。 filename.txt是在程序的第一部分创建的,我现在可以搜索那个filename.txt。我想要做的另一个例子是。当文件被创建时,数据被输入名字,姓氏,生日和出生月份。我想在出生月份搜索该文件并在label7中显示结果。IndexOutOfRange Exception from String.Format

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void tabPage2_Click(object sender, EventArgs e) 
    { 

    } 

    private void label3_Click(object sender, EventArgs e) 
    { 

    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void textBox2_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) 
    { 

    } 

    private void textBox3_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void textBox4_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void close_Click(object sender, EventArgs e) 
    { 
     Close(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     writetext(); 
     reset(); 

    } 
    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 button3_Click(object sender, EventArgs e) 
    { 
     Close(); 
    } 

    private void button2_Click(object sender, EventArgs e) 


    { 
     readfile(); 


    } 

    private void label7_Click(object sender, EventArgs e) 
    { 

    } 

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

}

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

    } 

    private void textBox5_TextChanged(object sender, EventArgs e) 
    { 

    } 
} 

}

+0

我们不可能在不知道filename.txt可能包含什么的情况下帮助您。告诉我们,我们可以帮助你。 – Smashery 2010-11-11 01:27:23

回答

0

根据您对xandy的回答的评论来判断,我们无法在不知道filename.txt文件格式的情况下帮助您。不过,你可能想要这样的东西。

private void button4_Click(object sender, EventArgs e) 
{ 
    string[] lines = File.ReadAllLines("filename.txt"); 
    string result = GetResultFromLines(lines, textBox5.Text); 
    label7.Text = (String.Format("Month of Birth{0}", result)); 
} 

根据您希望如何从文件中检索数据,您必须自己编写GetResultFromLines函数。

3

相反

label7.Text = (String.Format("Month of Birth{4}", textBox5.Text)); 

使用

label7.Text = (String.Format("Month of Birth{0}", textBox5.Text)); 

{0}在大括号0指的String.Format参数列表中的0定位参数,在这种情况下,是指textBox5.Text

--Update--

看来你需要打印[月]文本文件Label7的n行的代码应该是:

string[] lines = ... 
try{ 
    int month = Int32.parse(textBox5.Text); 
    label7.Text = String.Format("Month of Birth {0}", lines[month]); 
} 
catch(Exception e){ 
    label7.Text = "Invalid input"; 
} 
+0

我希望它显示文件中具有输入到textbox5中的出生月份的条目列表我不想要我输入到textbox5中的birthmonth – user770022 2010-11-11 01:20:41

+0

请阅读更新的答案。 – xandy 2010-11-11 01:23:29

+0

错误无效的表达术语'。' \t 错误标识符预计 错误标识符预期; 'try'是关键字\t 错误;预计 – user770022 2010-11-11 01:29:22

0

括号中的数字是不是字段宽度 - 这是使用的参数指标。