从类更新标签上的文本

时间:2015-12-04 02:01:09

标签: c# winforms visual-studio

我正在尝试创建类来帮助更好地组织我的代码而不是拥有一个巨大的不同函数字符串,函数调用我的表单加载,但它实际上并没有将更新应用于标签(Label仍然读取label1) 我的班级代码是

namespace WindowsFormsApplication1
{
    class DynamicDisplayHandler
    {


        public void LoadLastServer()
        {
            Form1 homepage = new Form1();
            MessageBox.Show("Loaded Class");

            if (File.Exists("./WTF/Config.wtf"))
            {
                int counter = 0;
                string line;


                System.IO.StreamReader file = new System.IO.StreamReader("./WTF/Config.wtf");
                while ((line = file.ReadLine()) != null)
                {
                    if (line.Contains("SET realmName"))
                    {

                        string converted = line.Replace("SET realmName", "");
                        string finalized = converted.Replace("\"", "");

                        homepage.lastServer.Text = finalized;
                    }
                    else
                    {

                        homepage.lastServer.Text = "Never Connected";
                    }

                    counter++;
                }

                file.Close();
            }
            else
            {

                homepage.lastServer.Text = "";
            }

        }
    }
}

现在我的实际Form1文件代码

namespace WindowsFormsApplication1
{

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }
       public void Form1_Load(object sender, EventArgs e)
        {
            DynamicDisplayHandler displayHandler = new DynamicDisplayHandler();
            displayHandler.LoadLastServer();
         }
     }
}

2 个答案:

答案 0 :(得分:2)

只要您Form1 homepage = new Form1(); LastLoadServer() public void LoadLastServer(Form1 homepage) { ... } ,就会遇到麻烦。您刚刚创建的新表单与调用该方法的原始表单无关。

传递引用:

displayHandler.LoadLastServer(this);

并相应地调用它:

int arrayDimension = 0;
while (arrayDimension * arrayDimension < cipher.length())
{
    arrayDimension++;
}

答案 1 :(得分:1)

因为类中的Form实例不是您看到的实例,所以您是新实例。像这样纠正它,通过构造函数传递实例。

class DynamicDisplayHandler
{
    public void LoadLastServer(Form1 f1)
    {
        Form1 homepage = f1;
    }
}
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        DynamicDisplayHandler displayHandler = new DynamicDisplayHandler();
        displayHandler.LoadLastServer(this); //
    }
}