2016-12-23 6 views
0

enter image description hereC#の窓は

は、[OK]を、私はこのプロジェクトで少しの助けを必要とする援助MessaeBoxに上文字列配列からの結果を一覧表示したり、新しいフォームを形成しています。これは フォーム未亡人の私のメインウィンドウであり、これはMainFormをからのコードです:

using System; 
using System.Windows.Forms; 

namespace TestNiCat1 
{ 
    public partial class Form1 : Form 
    { 


     private Atleticar atleticar; 
     public Atleticar noviAtleticar { get { return atleticar; } } 
     public string tipDiscipline;    
     private string imeDiscipline { get; set; } 
     private int brojUcesnika { get; set; } 
     public string [] nizUcesnika { get; set; } 
     public string[] getskakac() 
     { 
      string[] arr = new string[listBox1.Items.Count]; 
      for (int i = 0; i < listBox1.Items.Count; i++) 
      { 
       arr[i] = listBox1.Items[i].ToString(); 
      } 
      return arr; 
     } 
     //listBox2.trkac to array 
     public string[] getTrkac() 
     { 
      string[] arr1 = new string[listBox2.Items.Count]; 
      for (int i = 0; i < listBox1.Items.Count; i++) 
      { 
       arr1[i] = listBox2.Items[i].ToString(); 
      } 
      return arr1; 
     }  
     public Form1() 
     { 
      InitializeComponent(); 
     }    
     private void buttonDodaj_Click(object sender, EventArgs e) 
     { 
      if (radioButtonSkok.Checked) 
      {    
       atleticar = new Skakac(textBoxIme.Text,textBoxPrezime.Text,float.Parse(textBoxRezultat.Text)); 
       this.listBox1.Items.Add(atleticar);    
      } 
      else if (radioButtonPrepone.Checked) 
      { 
       atleticar = new Trkac(textBoxIme.Text, textBoxPrezime.Text, float.Parse(textBoxRezultat.Text)); 
       this.listBox2.Items.Add(atleticar); 
      }      
     } 
     private void buttonTrazi_Click(object sender, EventArgs e) 
     { 
      if (radioButtonSkok.Checked) 
      { 
       getskakac(); 

      } 
      else if (radioButtonPrepone.Checked) 
      { 
       getTrkac(); 
      }      
     } 
    } 
} 

私は1つの抽象クラスを持っているし、2クラスコード:私は必要なもの

namespace TestNiCat1 
{ 
    public abstract class Atleticar 
    { 
     protected string ime { get; set; } 
     protected string prezime { get; set; } 
     protected float rezultat { get; set; }   
     public override string ToString() 
     { 
      return ime + " " + prezime + " " + rezultat; 
     } }//abstract Atleticar 
    public class Skakac : Atleticar 
    { 
     private String tip; 
     public Skakac(String ime,String prezime,float rezultat) 
     { 
      this.rezultat = rezultat; 
      this.ime = ime; 
      this.prezime = prezime; 
     } 
    }public class Trkac : Atleticar 
    { 
     public Trkac(String ime,String prezime,float rezultat) 
     { 
      this.rezultat = rezultat; 
      this.ime = ime; 
      this.prezime = prezime; 
     } 
    } 
} 

が押されたときにすべての項目を一覧表示することですTraziボタンはListbox1またはlistbox2に保存され、保存された最高の結果でソートされます。 私はtraziボタンを押してすべてのリストボックスの項目をString Arrayに保存するようにしましたが、最高のスコアでソートして新しいメッセージボックスに表示するのに役立つ必要があります。あるいは、listBoxのアイテムをimmidiatlyで並べ替える方法リストボックスの最大数。

答えて

0

私は、これはあなたがあなたがあなたの抽象クラスAtleticarIComparableインタフェースを実装したほうが良いかもしれ表示されます

public string[] getskakac() 
{ 
    listBox1.Sorted = true; 
    return listBox1.Items.Cast<string>().ToArray(); 
} 
0

を探して何だと思います。これによりソートがはるかに容易になり、オブジェクトがソートされる方法を完全に制御することができます。あなたはAtleticarクラスは、ソートのためのCompareTo方法実装することを指示する必要があり

まず:以下

public abstract class Atleticar : IComparable 

あなたがIComparableインターフェイスを実装する際に必要なCompareTo方法です。 rezultat変数に基づいて各オブジェクトを単純に比較しますが、必要に応じてこの変数をカスタマイズして別の変数を並べ替えることができます。

public int CompareTo(object obj) { 
    Atleticar other = (Atleticar)obj; 
    if (this.rezultat == other.rezultat) 
    return 0; 
    if (this.rezultat > other.rezultat) 
    return 1; 
    else 
    return -1; 
} 

以下では、ListBoxと2つのボタンでフォームを作成しました。 1つのボタンは、リストボックスの中にいくつかのソートされていないAtleticarオブジェクトを埋めます。ボタン2はリストをソートします。 listbox1.Itemsを直接並べ替えることはできないと思いますので、リストボックスの項目からAtleticar個のオブジェクトのリストを作成してソートし、リストボックスの項目をクリアしてソートされたデータで更新してください。

private List<Atleticar> GetData() { 
    List<Atleticar> list = new List<Atleticar>(); 
    Atleticar atl = new Trkac("textBoxIme.Text1", "textBoxPrezime.Text1", 12); 
    list.Add(atl); 
    atl = new Trkac("textBoxIme.Text2", "textBoxPrezime.Text2", 1); 
    list.Add(atl); 
    atl = new Trkac("textBoxIme.Text3", "textBoxPrezime.Text3", 122); 
    list.Add(atl); 
    atl = new Trkac("textBoxIme.Text4", "textBoxPrezime.Text4", 99); 
    list.Add(atl); 
    atl = new Trkac("textBoxIme.Text5", "textBoxPrezime.Text5", 03); 
    list.Add(atl); 
    atl = new Trkac("textBoxIme.Text6", "textBoxPrezime.Text6", 67); 
    list.Add(atl); 
    atl = new Trkac("textBoxIme.Text7", "textBoxPrezime.Text7", -12); 
    list.Add(atl); 
    return list; 
} 

private void buttonGetData_Click(object sender, EventArgs e) { 
    listBox1.Items.Clear(); 
    foreach (Atleticar a in GetData()) { 
    listBox1.Items.Add(a); 
    } 
} 

private void buttonSort_Click(object sender, EventArgs e) { 
    List<Atleticar> list = new List<Atleticar>(); 
    foreach (Atleticar a in listBox1.Items) { 
    list.Add(a); 
    } 
    list.Sort(); 
    listBox1.Items.Clear(); 
    foreach (Atleticar a in list) { 
    listBox1.Items.Add(a); 
    } 
} 

これは意味があると思います。