C# - 从另一个类更改标签文本

时间:2016-11-25 10:37:10

标签: c# winforms class label

我是C#的总菜鸟,我一直坚持改变其他班级的状态标签文字。

当此类连接到db时,我想将标签文本更改为"已连接":

public class DBConnect
{
    public void Connect()
    {
        MySqlConnection conn;
        string myConnectionString;

        myConnectionString = "server = 127.0.0.1; uid=cardb;" +
            "pwd=cardb; database=test;";            

        try
        {
            Form form = new Form();
            conn = new MySqlConnection();
            conn.ConnectionString = myConnectionString;
            conn.Open();
            form.setStatus();
        }
        catch (MySqlException ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

这是我在Form类中创建的setStatus方法:

public partial class Form : System.Windows.Forms.Form
{
    public Form()
    {
        InitializeComponent();
    }

    public void setStatus()
    {
        StatusTextLabel.Text = "Connected";
    }

标签文字虽然没有改变..:/

3 个答案:

答案 0 :(得分:1)

我看不到创建DBConnect对象或调用其Connect()方法的代码,也没有看到使Form对象可见的代码,例如form.Show()

除此之外,您可能不应该使用Connect方法创建表单;而是从表单中调用Connect(),例如在Form_Load()中,让它返回一个或更好的状态:conn对象(连接后你现在扔掉它),并使Form_Load根据它设置Label.Text。

示例代码:

private void Form1_Load(object sender, EventArgs e)
{
    var conn = new DBConnect().Connect();
    if (conn != null && conn.State == ConnectionState.Open)
    {
        StatusTextLabel.Text = "Connected";
    }
}

public class DBConnect
{
    public SqlConnection Connect()
    {
        SqlConnection conn = ...
        // ...
        return conn;
    }
}

答案 1 :(得分:0)

传递表单而不是创建新表单。

<html lang="fa-IR" dir="rtl">

    <body>
        <input type="number" step="0.2">
    </body>
</html>

然后试试这个

private Form form {get;set;}

public DBConnect(Form form)
{  
    this.form = form;
}

答案 2 :(得分:0)

您可能需要一个已打开表单的实例,并从那里调用该方法,而不是创建新表单的实例。你可以尝试:

(System.Windows.Forms.Application.OpenForms["Form"] as Form).setStatus();