2017-09-27 9 views
0

ArrayリストからListboxに出力しようとしています。私の問題は、クラスを汎用アレイリストにどのように接続するのか分からないことですね。最終結果は次のようになります。汎用アレイリストからリストボックスに出力するには?

enter image description here

情報は、それほどのようにソートする必要があります。すべての情報は、最初のリストボックスに入り、その後、上記の18は大人になり、以下の18に子供たち。私のクラスは次のようになります:

namespace Patients 
{ 
    public class Person 
    { 
     public string Name { get; set; } 
     public int Age { get; set; } 
     public String Password { get; set; } 

     public Person() //Constructor 
     { 
      Age = 0; 
      Password = ""; 
     } 

     public Person (string name, int age, string password) //Parameters  
     { 
      this.Name = name; 
      this.Age = age; 
      this.Password = password;  
     } 

     public override string ToString() // 
     {  
      return Name + Age.ToString() + Password; //outputs as a string 
      // return Name + " (" + Age + " years) " + Password ; 
     }    
    } 
}  

namespace Patients 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     public static void Page_Load(object sender, EventArgs e) 
     { 

     } 

     public void ButtonAdd_Click(object sender, EventArgs e) 
     { 
      Person p = new Person(); 

      List<string> People = new List<string>(); 
      People.Add(TextBoxName.Text); 
      People.Add(TextBoxAge.Text); 
      People.Add(TextBoxPassword.Text); 

      foreach (object Person in People)  
      { 
       ListBoxAll.Items.Add(p.Name + p.Age.ToString() + p.Password); 
      } 

      if (p.Age > 18) 
      { 
       ListBoxAdults.Items.Add(p.Name + p.Age.ToString() + p.Password);  
      }     
      else 
      {  
       ListBoxKids.Items.Add(p.Name + p.Age.ToString() + p.Password);  
      }       
     }  
    } 
} 
+0

'string.Join()'関数の使い方についてgoogle検索を行います。 – MethodMan

答えて

0

あなたの問題は、プロパティを設定していないと思います。事実、あなたはリストを一切必要としませんが、あなたの患者を守るためにリストを使うことができます。これは、しかし、まだ必要はありません。

namespace Patients 
{ 
public partial class WebForm1 : System.Web.UI.Page 
{ 
    // Define Property and initialize List 
    public List<Person> patients{ get; } = new List<Person>(); 
    public static void Page_Load(object sender, EventArgs e) 
    { 

    } 
    public void ButtonAdd_Click(object sender, EventArgs e) 
    { 
     // Use the Constructor with Parameters 
     Person p = new Person(TextBoxName.Text, TextBoxAge.Text, TextBoxPassword.Text); 
     // Add your patient to your List 
     patients.Add(p); 
     // Use the ToString() of your Person 
     ListBoxAll.Items.Add(p.ToString()); 


     if (p.Age > 18) 
     { 
      ListBoxAdults.Items.Add(p.ToString());  
     }     
     else 
     {  
      ListBoxKids.Items.Add(p.ToString());  
     }       
    }  
} 

}

+0

割り当てには一般的な配列リストが必要です。助けをありがとう...しようとすると.. – Jess

+0

配列またはリスト? – Nikolaus

+0

私はそれらを交換すれば申し訳ありませんが、私はまだ新しいです。リスト Class ..をArraylistに使う方が良いと言われました。これは私たちのリソースでした:https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx – Jess

0

あなたは少し混ざっているようです。 このようなものを試してみてください。

Person p = new Person(); 
p.Name = TextBoxName.Text; 
p.Age= TextBoxAge.Text; 
p.Password= TextBoxPassword.Text; 
ListBoxAll.Items.Add(p); 
+0

あなたの例のように別々の行にしたい場合は、ListBoxAll> items.Add(p.Name) ; ListBoxAll> items.Add(p.Age); ListBoxAll> items.Add(p.Password); – CodeMnke

+0

リストボックスに 'Person'を追加することはできません。' Patients.Person'があなたのリストボックス内の有効なエントリであると考えない限り、何かを有効にすることを期待します。 – HimBromBeere

+0

はい、文字列を追加するだけでも可能です。オブジェクトを追加すると、オブジェクトの "toString"が印刷用に使用されます。これは彼の例に基づいています。 – CodeMnke

0

私たちにいいですいくつかのトリック、まずあなたがそうのような性質のためにデフォルトを宣言することができますオフ:

public string Name { get; set; } = "Steve"; 
    public int Age { get; set; } = 1; 
    public String Password { get; set; } = "password"; 

をしかし、それはまたべき""は文字列の既定値であり、0はnullを許可しないintの既定値であるため、これらの既定値について心配する必要はありません。

コンストラクタでAge = 0;を宣言することは、基本的にこの場合は時間の無駄です。 (null可能なintの場合、デフォルトはnull

次に、デフォルトで問題はないので、あなたのようにコンストラクタでプロパティを宣言する必要はありません。あなたは完全にコンストラクタを削除することができ、ちょうど次の操作を行い

var myPerson = new Person { Name = "Steve", Age = 18, Password = "Foo" }; 

次は、あなたはすぐにあなたがボタンクリックの範囲を出ると既存のすべての人々を失っています。

代わりにあなたが「大人」と「子供」

ような何かその後、おそらく「PopulateListsと呼ばれるメソッドを作成し、クリック方式(彼らは存続その道)の範囲外の人々の二つのリストを宣言したいと思います

  1. をすべてクリアし、リストボックス
  2. それぞれに追加するには
  3. (あなたはLINQのを使用してのIQueryableを作成し、あなたのリスト上の文を選択することができます)を適用し、各グループ名のリストをボックス:「それは、次の手順を実行します
ボタンをクリックすると、あなたは、新しい人を作る右のリストに割り当て、その後、PopulateListsを(呼び出す必要があり

ここであなたが始めるために必要な情報です:

LINQの選択リストを取得しますプロパティの(この場合Imは中世のリストの中に人のリストをオンにする予定で、あなたがが名前で同じことを行うことができます)

var ages = People.Select(p => p.Age); 

のListBoxの.Itemsプロパティは、リストと同じように動作します視覚的に表示されます。これは特に文字列のリストです。

したがって、たとえば、あなたが始める必要があります...

MyListBox.Items.Clear(); 
MyListBox.Items.Add(...); 
MyListBox.Items.AddRange(...); 

などなどのようなもの

を行うことができます!

関連する問題