using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { string sid = textBox1.Text; string id = ""; string prv = ""; if (sid.Trim().Length < 18) { MessageBox.Show("省份证位数不足", "错误提示!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { StreamReader sr = new StreamReader (System.Environment.CurrentDirectory + @"\data.txt"); string nextLine; while ((nextLine = sr.ReadLine()) != null) { string[] ids = nextLine.Split(','); id = ids[0]; prv = ids[1]; //匹配身份证 if (sid.Substring(0, 2).Equals(id)) { textBox2.Text = prv; return; } } textBox2.Text = "暂无信息!"; } catch (Exception err) { Console.WriteLine(err); } InitializeComponent(); } } }错在哪里
时间: 2024-02-10 10:07:53 浏览: 22
这段代码中存在一个逻辑错误。在构造函数中,首先会获取 TextBox1 的文本,但是此时 TextBox1 尚未初始化,因此无法读取其文本。应该将 `InitializeComponent()` 方法调用放在获取 TextBox1 文本之后,即先初始化控件再获取其属性。正确的代码应该是这样的:
```csharp
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); // 先初始化控件
string sid = textBox1.Text;
string id = "";
string prv = "";
if (sid.Trim().Length < 18)
{
MessageBox.Show("省份证位数不足", "错误提示!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
StreamReader sr = new StreamReader(System.Environment.CurrentDirectory + @"\data.txt");
string nextLine;
while ((nextLine = sr.ReadLine()) != null)
{
string[] ids = nextLine.Split(',');
id = ids[0];
prv = ids[1];
//匹配身份证
if (sid.Substring(0, 2).Equals(id))
{
textBox2.Text = prv;
return;
}
}
textBox2.Text = "暂无信息!";
}
catch (Exception err)
{
Console.WriteLine(err);
}
}
}
```