2010-12-04 13 views
0

まずはC#の初心者です(プログラミングの初心者).Googleでの検索が終わった後、私は解決策を見つけることができませんでした。私は14個のテキストボックスといくつかのチェックボックスの持っている ::私は何をする必要があるかそうC#複数のテキストボックスを1つの.txtファイルに保存する

は、これです例えば

名前、生年月日、出身地と一人の他のいくつかの情報を... Iすべての情報を1つの.txtまたは.rtfファイルに保存する保存ボタンが1つあります。これらの情報をtextBoxに入力するたびに、textBoxNameに入力されたテキストで名前付きファイルとして保存されます。例えば

textBoxName: Petar Milutinovic; 
textBoxBirth: 01.11.1991; 
textBoxCity: Paracin; 

、[保存]ボタンの上に私をクリックしたとき、それはこのフォームでペタルMilutinovic(textBoxNameと同じ名前)と呼ばれるファイルにすべてのそれらの情報を保存します:

Name: Petar Milutinovic; 
Date of Birth: 01.11.1991; 
City: Paracin; 

ああ、少年...私は本当に英語のスペルにはごめんなさい、それは私のメインではない(あなたはそれに気づいた...)。

private string Name 
{ 
    // now you avoid a bunch of references to txtName.Text potentially 
    // throughout your form code. This makes things more simple if you 
    // want to swap out UI elements later on. 
    get { return txtName.Text; } 
} 

private DateTime DateOfBirth 
{ 
    get { return /*selected date*/; } } 
} 

// more properties for each field 

今、あなただけのファイルを開き、書き込みを開始:この問題は、あなたが最初にそうようにこれらのフィールドのそれぞれのプロパティを作成する(必要がある)ことができます...

答えて

1

あなたが14のテキストボックスを持っているので、14の要素を保持できる文字列配列を作成するのが最も簡単な方法です(初心者ですから)。

string[] contents = new string[14]; 
contents[0] = "Name: " + textBoxName.Text; 
contents[1] = "City: " + textBoxCity.Text; 
contents[2] = "Date of Birth: " + textBoxBirth.Text; 
... 

次にあなたがファイルに直接保存することができます:もちろん

System.IO.File.WriteAllLines(textBoxName.Text + ".txt", contents); 

はこれを行うには、他のより効率的な方法がありますが、私はこの方法が最も理解しやすいと思います。

(私はあなたのチェックボックスを忘れてしまったが、あなたはこの概念と同じ目標を達成することができます)

EDIT:

チェックボックスやラジオボタンの場合、あなたはチェック済み(またはにcheckState)プロパティを使用することができます。

contents[0] = checkBox.Checked ? "1" : "0"; 
contents[1] = radioButton.Checked ? "1" : "0"; 
1が真表し

と0がfalseを表し:

あなたのような何かを行うことができます。これらの値は、正しく読み返す限り、好きなものにすることができます。

+0

Tnx、これも面白いです!私はCamiloの解をかなり良く理解していますが、これは私の問題を解決する良い方法です:) Tnx – Estomaniko

+0

これは素晴らしい、覚えやすいです:)ラジオボタンはどうですか?チェックボックスやテキストボックスやlitleと同じ方法ですか? – Estomaniko

1

この日はかなり苦痛だった

private void WriteDataFile(filepath) 
{ 
    // Note: You should handle potential IO errors in a try/catch block 
    using(FileStream fs = File.Open(filepath, FileMode.Create) 
    using(StreamWriter sw = new StreamWriter(fs)) 
    { 
     sw.WriteLine(String.Format("Name: {0}", this.Name)); 
     sw.WriteLine(String.Format("Date of Birth: {0}", this.DateOfBirth)); 
     // etc. 
    } 
} 
+0

あなたのソリューションは完璧に機能するかもしれませんが、プログラミングの初心者だと少し単純化するかもしれません;) – Machinarius

+0

ええ、このコードを分析して、それぞれのプロパティで混乱しているim ...学習したい私はこれに参加しました。教員たちは、彼らが私に多くの理論を教えています(私はそれを知っていますが、それを実践することはできません)。そして、私が学んだのは、グーグルといくつかのツァットからです... – Estomaniko

1

txtファイルの内容を読み取る必要がありますか、それとも単に保存用ですか?後者の場合、すべてのプロパティ(Person、Employeeなど)をカプセル化し、フォームフィールドにバインドする直列化可能なクラスを作成することを検討できます。次に、クラス/オブジェクトを直列化してテキストファイルに保存するだけで、個々のフィールドごとにswWritelineを書く必要があります。

+0

うーん、ええ、私は後でそのファイルを読むことができる必要があると言うことを忘れていました(そしておそらく各ファイルを印刷します)... – Estomaniko

0

プログラミングの初心者ですから、初心者のときに聞いたはずのことを教えてください:すべてのオブジェクト指向(OO)のやり方です。いつかあなたは機能プログラミングのようなものを見るために十分に進歩するかもしれませんが、それまでは、オブジェクト指向が従う方法です、それは多くの助けになります。

このOOのことは何ですか?まあ、すべてがオブジェクトです。

これは、Personオブジェクトを作成していることを意味します。それはどうやってやるの? Classを定義する。

class Person 
{ 
    public Person(string name, 
        string age, 
        string city) 
    { 
     this.Name = name; 
     this.Age = age; 
     this.City = city; 
    } 

    public string Name { get; private set; } 
    public string Age { get; private set; } 
    public string City { get; private set; } 

    public void SerializeToFile() 
    { 
     //Do the serialization (saving the person to a file) here. 
    } 
} 

を次に、テキストフィールドの値からPersonを作成して、そのようにそれを保存します(「保存」ボタンで、たとえば):

private void buttonSave_Click(object sender, EventArgs e) 
{ 
    Person p = new Person(textBoxName.Text, 
          textBoxAge.Text, 
          textBoxCity.Text); 
    p.SerializeToFile(); 
} 
ここではどのように動作

です

これはすべて奇妙に思えるかもしれませんが、データベースに人を保存したり、引数として渡すなど、より洗練された方法で多くのことを行うことができます。追記として

、これも継承できます:

class Employee : Person 
{ 
    public string Job { get; private set; } 
} 

を参照してください、そのクラスは、Personクラスの同じコードでなく、Job特性を有しています。クリーンコードの特典として、Employeeを、従業員が「人」なのでPersonを引数として渡すメソッドに渡すことができます。

+0

うん! Tnxたくさん、これは私が探していたものです!その理解しやすい... IMO、すべての学校は、学生のためのプログラミングを簡素化しようとする必要があります...彼らは、スターターがeasly理解することができないという理論を教えています。これは大きな助けです、私は今この仕事の仕組みを理解しています:) – Estomaniko

+0

私はまた、単純な説明が良いと思いますが、理論を教えるための良い議論があります。非常に尊敬されているプログラマーと仲間のStackOverflowerみんな知恵へのいくつかの擬似ショートカットの一つです):http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html –

+0

PS:私は助けてくれてうれしい! :) –

関連する問題