2012-11-13 15 views
5

Ayarları dosyadan (HighscoreSaved, highscoreList dizisine yerleştirilir) verileri getiren bir işlev yapmaya çalışıyorum ve sonra dizeleri birleştirip metin kutusuna yazabilirim (highScore .Text)Windows, farklı sınıflar oluşturur, textbox.text değiştirmeye çalışıyor

Ancak ben işlev hiçbir şey çağırdığınızda Yani burada

olur benim kodudur: Form1'ı

private void button4_Click_1(object sender, EventArgs e) 
    { 
     Highscore.Fetch(); 
     Highscore.Set(); 
    } 

    public void highscoreText (string value) 
    { 
      this.highScore.Text = value; 
    } 

Ve Highscore.Fetch tarafından çağrılan gerekiyordu heres sınıf şu() ve Highscore.Set (Değişikliği neden görmediklerini) Ama onlara çağırdığınızda hiçbir şey benim metin kutusu

public static class Highscore 
    { 
     public static void Fetch() 
     { 
      Form1.highscoreList[0] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper1 + "\t\t" + HighscoreSaved.Default.highscoreScore1; 
      Form1.highscoreList[1] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper2 + "\t\t" + HighscoreSaved.Default.highscoreScore2; 
      Form1.highscoreList[2] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper3 + "\t\t" + HighscoreSaved.Default.highscoreScore3; 
      Form1.highscoreList[3] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper4 + "\t\t" + HighscoreSaved.Default.highscoreScore4; 
      Form1.highscoreList[4] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper5 + "\t\t" + HighscoreSaved.Default.highscoreScore5; 
      Form1.highscoreList[5] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper6 + "\t\t" + HighscoreSaved.Default.highscoreScore6; 
      Form1.highscoreList[6] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper7 + "\t\t" + HighscoreSaved.Default.highscoreScore7; 
      Form1.highscoreList[7] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper8 + "\t\t" + HighscoreSaved.Default.highscoreScore8; 
      Form1.highscoreList[8] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper9 + "\t\t" + HighscoreSaved.Default.highscoreScore9; 
      Form1.highscoreList[9] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper10 + "\t\t" + HighscoreSaved.Default.highscoreScore10; 

      Form1.highscoreInt[0] = HighscoreSaved.Default.highscoreScore1; 
      Form1.highscoreInt[1] = HighscoreSaved.Default.highscoreScore2; 
      Form1.highscoreInt[2] = HighscoreSaved.Default.highscoreScore3; 
      Form1.highscoreInt[3] = HighscoreSaved.Default.highscoreScore4; 
      Form1.highscoreInt[4] = HighscoreSaved.Default.highscoreScore5; 
      Form1.highscoreInt[5] = HighscoreSaved.Default.highscoreScore6; 
      Form1.highscoreInt[6] = HighscoreSaved.Default.highscoreScore7; 
      Form1.highscoreInt[7] = HighscoreSaved.Default.highscoreScore8; 
      Form1.highscoreInt[8] = HighscoreSaved.Default.highscoreScore9; 
      Form1.highscoreInt[9] = HighscoreSaved.Default.highscoreScore10; 

      Form1.highscoreKeeper[0] = HighscoreSaved.Default.highscoreKeeper1; 
      Form1.highscoreKeeper[1] = HighscoreSaved.Default.highscoreKeeper2; 
      Form1.highscoreKeeper[2] = HighscoreSaved.Default.highscoreKeeper3; 
      Form1.highscoreKeeper[3] = HighscoreSaved.Default.highscoreKeeper4; 
      Form1.highscoreKeeper[4] = HighscoreSaved.Default.highscoreKeeper5; 
      Form1.highscoreKeeper[5] = HighscoreSaved.Default.highscoreKeeper6; 
      Form1.highscoreKeeper[6] = HighscoreSaved.Default.highscoreKeeper7; 
      Form1.highscoreKeeper[7] = HighscoreSaved.Default.highscoreKeeper8; 
      Form1.highscoreKeeper[8] = HighscoreSaved.Default.highscoreKeeper9; 
      Form1.highscoreKeeper[9] = HighscoreSaved.Default.highscoreKeeper10;     
     } 
     public static void Set() 
     { 
      Form1 mainForm = new Form1(); 
      string[] highscoreImported = new string[10]; 
      Array.Copy(Form1.highscoreList, highscoreImported, 10); 
      string highscores = string.Join("\n", highscoreImported); 
      mainForm.highscoreText(highscores); 
     } 

cevap

8

Sen Set yönteminde Form1 yeni bir örneğini oluştururken değişiklikler, olmasıdır. Formun bir örneğini bunun yerine yönteme iletmelisiniz.

public static void Set(Form mainForm) 
{ 
    string[] highscoreImported = new string[10]; 
    Array.Copy(Form1.highscoreList, highscoreImported, 10); 
    string highscores = string.Join("\n", highscoreImported); 
    mainForm.highscoreText(highscores); 
} 

Daha sonra sizin gibi diyebilirsiniz: (sınıfınızda Highscore olarak) gibi

şey

private void button4_Click_1(object sender, EventArgs e) 
{ 
    Highscore.Fetch(); 
    Highscore.Set(this); //notice "this" 
} 
+2

YEs işe yarıyor gibiydi, teşekkürler –

1

Daha iyi bir yaklaşım tek seferde hepsini yapmak olacaktır.

using System.Linq; 

public static void FetchAndSet() 
{ 
    Form1.highscoreList[0] = "\t\t\t" + HighscoreSaved.Default.highscoreKeeper1; 
    . 
    . 

    Form1.highscoreInt[0] = HighscoreSaved.Default.highscoreScore1; 
    . 
    . 

    Form1.highscoreKeeper[0] = HighscoreSaved.Default.highscoreKeeper1; 
    . 
    . 

    //Use LINQ's Take to Pull out the Top 10. 
    string highscores = string.Join("\n", highscoreList.Take(10)); 
    this.highscoreText(highscores);  
} 
İlgili konular