2012-11-13 21 views
5

Im cố gắng tạo một hàm lấy dữ liệu từ tệp cài đặt của tôi (HighscoreSaved được đặt vào mảng highscoreList) và sau đó nối chuỗi và viết chúng vào hộp văn bản (highScore .text)Windows tạo các lớp khác nhau, cố gắng thay đổi textbox.text

Tuy nhiên khi tôi gọi vào chức năng có gì xảy ra

Vì vậy, đây là mã của tôi: Form1

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

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

Và heres thats lớp nghĩa vụ phải được gọi bằng Highscore.Fetch() và Highscore.Set () Nhưng khi tôi gọi vào chúng có gì thay đổi trong textbox của tôi

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); 
     } 

Trả lời

8

Bạn đang tạo một thể hiện mới của Form1 trong phương pháp Set của bạn, đó là lý do tại sao bạn không nhìn thấy sự thay đổi. Thay vào đó, bạn nên chuyển một thể hiện của Biểu mẫu sang phương thức.

Giống như (trong lớp học của bạn Highscore):

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); 
} 

Sau đó bạn có thể gọi nó thích:

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

YEs này dường như hoạt động, cảm ơn bạn –

1

Một cách tiếp cận tốt hơn sẽ làm tất cả chúng cùng một đi.

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);  
} 
Các vấn đề liên quan