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 と save を使用するときの仕組みを知っています。どうすればこれについて行くことができますか?私はストリームライターを正しく使用します。ユーザーがパスをテキストボックスに入力し、ユーザーがロードを押すと、指定されたファイルがロードされることを理解しています。今、私はこれを正しく表現できるようにコードを理解しようとしています。

それは次のようなものでしょうか:

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 に答える