Im trying to make a function that fetches the data from my settings file (HighscoreSaved wich is put into highscoreList array) and then join the strings and write them into the textbox (highScore.Text)
However when i call on the function nothing happens
So here is my code: Form1
private void button4_Click_1(object sender, EventArgs e)
{
Highscore.Fetch();
Highscore.Set();
}
public void highscoreText (string value)
{
this.highScore.Text = value;
}
And heres the class thats supposed to be called by Highscore.Fetch(), and Highscore.Set() But when i call on them nothing changes in my textbox
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);
}
You are creating a new instance of the Form1
in your Set
method , that is why you are not seeing the change. You should pass an instance of the Form to the method instead.
Something like (in your class 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);
}
Later you can call it like:
private void button4_Click_1(object sender, EventArgs e)
{
Highscore.Fetch();
Highscore.Set(this); //notice "this"
}
A better approach would be to do all of them at one go.
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With