Windows形成不同的类,尝试更改textbox.text

Mar*_*son 5 .net c# forms arrays class

我试图创建一个从我的设置文件中取出数据的函数(HighscoreSaved放入highscoreList数组)然后加入字符串并将它们写入文本框(highScore.Text)

但是当我打电话给这个功能时没有任何反应

所以这是我的代码:Form1

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

    public void highscoreText (string value)
    {
            this.highScore.Text = value;
    }
Run Code Online (Sandbox Code Playgroud)

并且继承了应该由Highscore.Fetch()和Highscore.Set()调用的类.但是当我调用它们时,我的文本框中没有任何变化

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);
        }
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 8

您正在创建的一个新的实例Form1在你的Set方法,这就是为什么你看不到的变化.您应该将Form的实例传递给方法.

像(在你班上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);
}
Run Code Online (Sandbox Code Playgroud)

之后您可以将其称为:

private void button4_Click_1(object sender, EventArgs e)
{
    Highscore.Fetch();
    Highscore.Set(this); //notice "this"
}
Run Code Online (Sandbox Code Playgroud)