2

ユーザー入力を収集するいくつかのテキスト ボックスを含むファイルに Windows フォームを保存する最良の方法は何でしょうか。私は現時点でこれを使用しています:

if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                File.WriteAllText(saveFileDialog1.FileName, tB1.Text);
                File.WriteAllText(saveFileDialog1.FileName, tB2.Text);
            }

これは、最初のテキスト ボックスからの入力を保存する場合には問題ありませんが、もう一方のテキスト ボックスに入力したデータは保存されません。

4

6 に答える 6

1

2つのテキストボックスを連結するのはどうですか?明確にするために、

string forSaving = tB1.Text + "\n" + tB2.Text;
File.WriteAllText(saveFileDialog1.FileName, forSaving);

また

File.WriteAllText(saveFileDialog1.FileName, tB1.Text + "\n" + tB2.Text);

更新1

string firstName = "FirstName: " + txtFirstName.Text;
string lastName = "LastName: " + txtLastName.Text;
string personAddress = "FirstName: " + txtAddress.Text;
string details = firstName + "\n" + lastName + "\n" + personAddress;
File.WriteAllText(saveFileDialog1.FileName, tB1.Text + "\n" + details);
于 2013-01-12T15:58:46.380 に答える
1

次に、この2つのtexboxを連結します。

File.WriteAllText(saveFileDialog1.FileName, tB1.Text + Environment.NewLine + tB2.Text );
于 2013-01-12T15:59:32.277 に答える
1

おそらく最善の方法は、TextBoxからのすべての値を含む文字列を任意の形式で返すメソッドをフォームに作成することです。このようなものが機能します:

File.WriteAllText(saveFileDialog1.fileName, OutputUserInfo());

次に、内部OutputUserInfo()に必要なデータのフォーマットを設定して、データが何を入力したかを理解できるようにします。

の編集例OutputUserInfo()

private string OutputUserInfo() {
    return  "First Name: " + tbFirstName.Text + Environment.NewLine +
            "Surname: " + tbSurname.Text + Environment.NewLine +
            "Address" + tbAddress.Text + Environment.NewLine;
            // Just keep adding whatever you want on here.
            // Add the descriptions if you want, it will probably help
}

これをさまざまな形式(CSVなど)で作成することもできます。ただし、プレーンテキストファイルを作成しているだけの場合は、これが最も簡単な場合があります。しかし、それはあなた次第です。

于 2013-01-12T16:00:16.293 に答える
1

私だったら、StreamWriter / StreamReaderクラスを使用します。これらにはそれぞれWriteLineメソッドとReadlineメソッドがあるからです。

つまり、このようなもの

private void button1_Click(object sender, EventArgs e)
{
    if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName))
        {
            sw.WriteLine(tB1.Text);
            sw.WriteLine(tB2.Text);
            sw.WriteLine(tB3.Text);
            sw.WriteLine(tB4.Text);
            sw.Close();
        }

   }

}

private void button2_Click(object sender, EventArgs e)
{
    if(openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
        {
            tB1.Text = sr.ReadLine();
            tB2.Text = sr.ReadLine();
            tB3.Text = sr.ReadLine();
            tB4.Text = sr.ReadLine();
            sr.Close();
        }
    }

}
于 2013-01-12T16:22:39.350 に答える
1

それでは、エンコーディングを使用してすべての文字列を追加します。

    private void button1_Click(object sender, EventArgs e)
    {
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            string line = string.Format("{0},{1}"
            , textBox1.Text
            , textBox2.Text);
            File.AppendAllText(saveFileDialog1.FileName, line, Encoding.GetEncoding(1252));
        }
    }
于 2013-01-12T16:36:32.103 に答える
1

File.WriteAllText は、コンテンツを上書きするため、おそらく悪いです。

新しいファイルを作成し、指定された文字列をファイルに書き込み、ファイルを閉じます。対象ファイルが既に存在する場合は上書きされます。

代わりにFile.AppendAllTextどちらに行く

指定された文字列をファイルに追加し、ファイルがまだ存在しない場合はファイルを作成します。

于 2013-01-12T16:17:17.193 に答える