我正在尝试学习如何从ArrayList保存和加载数据 (我知道我应该使用数据库,但我是初学者)。
我有以下问题需要解决:
我正在尝试创建一个允许我保存某人手机号码的WindowsFrom应用程序。添加按钮应该使用我的textboxes
添加我放在文件和我的ArrayList中的用户。删除按钮必须删除他(如果他存在)。
这就是我解决问题的方法。
起初我创建了一个类Person:
class Person
{
private string name, areaCode, number;
public Person(string nom, string code, string numero)
{
name = nom;
areaCode = code;
number = numero;
}
public string getName()
{
return name;
}
public string getAreaCode()
{
return areaCode;
}
public string getNumber()
{
return number;
}
}
没有什么太复杂的了。它只需要name
人,areaCode
和他的number
。
然后在我的public partial class Form1 : Form
中,我向其声明了我的ArrayList和索引i
。
private ArrayList data = new ArrayList();
// I know using a List (or HashSet) is better, but my teacher wants us to use
// an ArrayList.
private int i = 0;
然后我创建了2个函数。一个用于保存我在.txt
文件中的ArrayList中的数据。另一个是将数据加载到ArrayList内的.txt
文件中(如果我们关闭了程序)。
这是我的保存功能:
private void Save()
{
StreamWriter sr = new StreamWriter("Saved_Files.txt");
foreach(Person p in data)
{
sr.WriteLine(p.getName() + p.getAreaCode() + p.getNumber());
}
sr.Close();
}
我在这里做的是创建一个StreamWriter
(因为我想在我的ArrayList中写入.txt
文件中的数据)然后,因为我知道我的ArrayList中的所有元素来自输入Person
,我做了一个foreach循环,这样我就可以保存我的ArrayList中每个name
的{{1}},areaCode
和number
在Person
文件中。然后,我关闭.txt
以避免StreamWriter
。
然后是我的加载功能:
Already in use Exception
再一次没什么太疯狂的。我在这里做的是创建一个 private void load()
{
StreamReader sr = new StreamReader("Saved_Files.txt");
while(sr.ReadLine() != null)
{
data[i] = sr.ReadLine();
i++;
}
sr.Close();
}
(因为我们想要读取StreamReader
文件中的数据并将其放入ArrayList中)然后我做了一个.txt
循环以便所有{ while
文件中的{1}}将集成在ArrayList中(我假设一行=一Persons
,因为.txt
由Person
定义,Person
和name
)。然后我增加number
以知道我是什么索引。最后,我关闭areaCode
以避免异常。
现在我已准备好实施我的i
按钮:
StreamReader
在此按钮中,我创建一个人并为其指定ADD
, private void button1_Click(object sender, EventArgs e)
{
Person p = new Person(textBox2.Text, comboBox1.SelectedIndex.ToString(), textBox1.Text);
for (int i = 0; i < this.i; ++i)
{
if (data[i] == p) // To avoid duplications
{
break;
}
else
{
data.Add(p);
}
}
Save();
}
,name
(他们来自我的areaCode
和number
。然后我做了一个textboxes
循环并确保我尝试放入我的ArrayList中的那个人不在那里。然后我combobox
这个人在我的for
文件中。
这是我的第一个问题。当我这样做时,Save
无论如何都会保持空白。
我的第二个问题是在删除按钮:
.txt
如前所述,我创建了一个.txt
,然后我创建了一个 private void button2_Click(object sender, EventArgs e)
{
Person p = new Person(textBox2.Text, comboBox1.SelectedIndex.ToString(), textBox1.Text);
DialogResult dialogResult = MessageBox.Show("Are you sure you want to remove the following Client?", "WARNING", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
data.Remove(p);
}
else if (dialogResult == DialogResult.No)
{
}
Save();
}
(只是为了确保用户是否真的要删除所选人员)。如果答案是肯定的,那么该人将被删除。如果没有它什么都不做。当然,我保存了一切。
这里的问题是,无论我放在我的Person
文件中(手动),并尝试将其删除。它不会去。
有人可以告诉我做错了什么(可能还有如何解决)?
我很抱歉,如果时间太长,我希望我的要求得到正确的表述(请原谅我英语不好,我来自法国)。