DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Combobox、textBoxをtextファイルに

環境/言語:[環境(WinXP) 使用言語(C#) .NETFramework(1.1)]
分類:[.NET]

はじめまして、よろしくお願いします。

フォーム上にCombobox1,Combobox2,Combobox1,textBOX1が
あります。
それぞれの内容を1つのテキストファイル(test.txtなど)にスペース区切り
または、カンマ区切りで出力したいのですが、どうしたらよいでしょうか?
あと、逆にスペース区切りまたは、カンマ区切りで保存したテキストファイルを
それぞれCombobox1,Combobox2,Combobox1,textBOX1に読み込みたいです。

ご指導お願いします。
> それぞれの内容を1つのテキストファイル(test.txtなど)にスペース区切り
> または、カンマ区切りで出力したいのですが、どうしたらよいでしょうか?

書かれている通りのことをコーディングされればよいだけですが、
どの部分がわからないのでしょうか?

TextBoxの方はその中にどんなデータが入っている状態を想定されているのか不明ですが、
ComboBoxであれば、項目を一つ一つ列挙して","(またはスペース)でつないだ文字列を作ればよいですよね。
後は単なるファイルIOだけですし。

> あと、逆にスペース区切りまたは、カンマ区切りで保存したテキストファイルを
> それぞれCombobox1,Combobox2,Combobox1,textBOX1に読み込みたいです。

これも同様にどの部分がわかりませんか?
ご返信ありがとうございます。

>>それぞれの内容を1つのテキストファイル(test.txtなど)にスペース区切り
>>または、カンマ区切りで出力したいのですが、どうしたらよいでしょうか?
この部分に関しては自分なりにコーディングしてみました。もし、指摘(読みやすくする方法、スマートにする方法)などがありましたらお願いいたします。

textBox1には会社名、textBox2には部署名、comboBox1には人名

private void button1_Click(object sender, System.EventArgs e)
{
const string fileName = "C:\\test.txt";
string txtb1 = textBox1.Text;
string txtb2 = textBox2.Text;
string cmb1 = comboBox1.Text;

if(File.Exists(fileName))
{
StreamWriter sw = new StreamWriter(fileName, true,
System.Text.Encoding.GetEncoding("Shift_JIS"));
sw.Write(txtb1 + ",");
sw.Write(txtb2 + ",");
sw.Write(cmb1 + ",");
sw.Flush();
sw.Close();
}
else
{
File.Create(fileName);
StreamWriter sw = new StreamWriter(fileName, true,
System.Text.Encoding.GetEncoding("Shift_JIS"));
sw.Write(txtb1 + ",");
sw.Write(txtb2 + ",");
sw.Write(cmb1 + ",");
sw.Flush();
sw.Close();
}

あと、Combobox1にlist.txtの内容を読み込む場合ですが、下記のコーディングだとうまくいきません。ちなみにlist.txtには人名が1行ずつ保存されています。

private void Form1_Load(object sender, System.EventArgs e)
{
const string filelist = "C:\\list.txt";
string cmb1 = comboBox1.Text;

StreamReader sr = new StreamReader
(filelist, System.Text.Encoding.GetEncoding("Shift_JIS"));
string s = sr.ReadToEnd();
sr.Close();
cmb1 = s;
}

>ComboBoxであれば、項目を一つ一つ列挙して","(またはスペース)でつないだ文字>列を作ればよいですよね。

この部分の処理のやり方がいまいちわかりません。
具体的にコーディング例を記載していただけると幸いかと思います。

ぜひ、よろしくお願いいたします。
> if(File.Exists(fileName))

ファイルがあれば追記、なければ新規作成であれば、
Fileの存在チェックをする必要はまったくないですね。
StreamWriter(String, Boolean, Encoding)のコンストラクタが
あれば追記、なければ新規作成してくれますから。

> あと、Combobox1にlist.txtの内容を読み込む場合ですが、下記のコーディングだとうまくいきません。ちなみにlist.txtには人名が1行ずつ保存されています。
>
> private void Form1_Load(object sender, System.EventArgs e)
> {
> const string filelist = "C:\\list.txt";
> string cmb1 = comboBox1.Text;
この一行は不要です。


comboBox1.Items.Clear(); // 既存データを消しておくなら・・・

> StreamReader sr = new StreamReader
> (filelist, System.Text.Encoding.GetEncoding("Shift_JIS"));

while (sr.Peek() >= 0)
{
comboBox1.Items.Add(sr.ReadLine());
}

> string s = sr.ReadToEnd();
この1行は不要です。

> sr.Close();

詳しくはStreamReaderのReadLineメソッドのヘルプをご覧下さい。

> cmb1 = s;

この1行は不要です。

> }
>
> >ComboBoxであれば、項目を一つ一つ列挙して","(またはスペース)でつないだ文字>列を作ればよいですよね。
>
> この部分の処理のやり方がいまいちわかりません。
> 具体的にコーディング例を記載していただけると幸いかと思います。

例えば、下記のようにするとか。

String s = "";
for (int i = 0; i< comboBox1.Items.Count; i++)
{
s += (comboBox1.Items[i].ToString() + ",");
}

s = s.TrimEnd(',');

#普段、C#は使ってませんので、このコード風のものはこの掲示板の投稿時に、
#その場で書いてます。文法上のミス等あるかもしれません。
よねKENさんたいへんありがとうございました。
無事解決することが出来ました。

また、わからないことがありましたらぜひよろしくお願いいたします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板