1

好的,我要再试一次。我现在得到了更多信息。我知道我不能使用打开和保存对话框,也没有数据库。所以我还是有点迷茫,因为我之前被展示过如何使用打开和保存对话框来做到这一点。我将提出我应该做的事情,然后是到目前为止我拥有的代码。我必须构建和添加的代码。我还将展示我想添加的内容。我只是想找到最好的方法来理解这个原因,现在我不是。我还是新手,我知道过去几天人们一直试图帮助我理解,然后我被告知它不是打开和保存对话框。这是我应该做的。

•添加一个名为 txtFilePath <--- 已经有的文本框

•在上面的文本框旁边添加一个按钮,上面写着“加载”(适当地命名)<-已经有了

•添加一个按钮,上面写着“保存”(适当地命名)<--已经有了这个

•单击“加载”按钮时,读取文本框中指定的文件(txtFilePath:绝对路径不是相对的)并将在其中找到的对象添加到列表框<---不理解

•当用户点击“保存”按钮时,将选中的记录写入txtFilePath中指定的文件(绝对路径不是相对的)而不截断当前里面的值<--不明白

这是我拥有的代码的一部分:`

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

        private void addButton_Click(object sender, EventArgs e)
        {
            EditDialog newEmployeeDialog = new EditDialog();
            if (newEmployeeDialog.ShowDialog() == DialogResult.OK)
            {
                employeeList.Items.Add(newEmployeeDialog.StaffMember);
            }
        }

        private void deleteButton_Click(object sender, EventArgs e)
        {
            if (employeeList.SelectedIndex == -1)
                return;

            if (MessageBox.Show("Really delete this employee",
                "Delete", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question)
            == DialogResult.Yes)
            {
                employeeList.Items.Remove(
                    employeeList.SelectedItem);
            }
        }

        private void editButton_Click(object sender, EventArgs e)
        {
            if (employeeList.SelectedIndex == -1)
                return;

            int employeeNum = employeeList.SelectedIndex;
            EditDialog newEmployeeDialog = new EditDialog();
            newEmployeeDialog.StaffMember =
                (Employee)employeeList.SelectedItem;

            if (newEmployeeDialog.ShowDialog() == DialogResult.OK)
            {
                employeeList.Items.RemoveAt(employeeNum);
                employeeList.Items.Insert(employeeNum, newEmployeeDialog.StaffMember);
                employeeList.SelectedIndex = employeeNum;
            }
        }

        private void employeeList_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (employeeList.SelectedIndex != -1)
            {
                Employee currentEmployee = (Employee)employeeList.SelectedItem;
                firstName.Text = currentEmployee.FirstName;
                lastName.Text = currentEmployee.LastName;
                jobTitle.Text = currentEmployee.JobTitle;
            }
            else
            {
                firstName.Text = lastName.Text = jobTitle.Text = "";
            }
        }
`

现在我知道你看不到按钮点击,但我确实有它们的标记。我知道您何时使用 open 并保存它是如何工作的。我该怎么办?我会正确使用流编写器。我知道用户将在文本框中输入路径,当用户点击加载时,它将加载他们指定的文件。现在我只是想理解一个能够正确表达这一点的代码。

会是这样的吗:

String filePath = this.txtFilePath.Text;

因为我需要将文本框命名为 txtFilePath。我知道你们中的一些人可能会说这很简单,但是当您第一次学习时,它似乎并不那么简单。自从我在家上大学以来,我一直在尝试一些事情来帮助我理解。感谢您的阅读,希望收到你们的来信。

更新:会是这样吗

读取文件

private void Load_Click(object sender, EventArgs e)
{ 
StreamReader myReader = new StreamReader(C:\\")
txtFilePath.Text = my reader.read to end();
myReader.Close();
}

然后是写一个文件

{
StreamWriter myWriter = new StreamWriter("C:\\test.txt", true);
            myWriter.Write("Some text");
            myWriter.WriteLine("Write a line");
            myWriter.WriteLine("Line 2");
            myWriter.Close();
}

如果这是正确的,那么我必须将它放在哪里,如果文件不存在以便记事本弹出以便他们可以添加它,那么他们可以保存它而不删除文件中的任何内容。

4

1 回答 1

0

假设该文件包含员工姓名列表,您应该能够使用以下内容将它们加载到您的列表框中:

var filepath = txtFilePath.Text;
if (File.Exists(filepath))
{
    var lines = File.ReadAllLines(filepath);
    foreach (var line in lines)
        employeeList.Items.Add(line);
}

然后假设您想将新员工姓名添加到用户刚刚输入到列表框中的文件中:

var filepath = txtFilePath.Text;
if (File.Exists(filepath))
    using (var sw = File.AppendText(filepath)) 
        sw.WriteLine((string)employeeList.Text);
else
    using (var sw = File.CreateText(filepath)) 
        sw.WriteLine((string)employeeList.Text);    

这尚未经过测试,但它应该几乎可以按原样工作......

于 2012-04-24T15:04:59.270 回答