обновить 2 разные метки с одинаковым выводом из 2 разных форм одновременно - PullRequest
1 голос
/ 05 апреля 2019

у меня есть 2 формы, они обе имеют label1, form1 и form2 label1 должны показывать один и тот же вывод, когда я нажимаю кнопку на form1, label1 в form1 изменится так, что label1 в form2

Форма 1

        SqlDataReader reader = cmdnext.ExecuteReader();
        while (reader.Read())
        {
            label1.Text = reader[0].ToString();
            break;

        }
        sqlcon.Close();

        Lobbypage lp = new Lobbypage(label1.Text);

    }

Form2

     public Lobbypage(string labelText)
    {
        InitializeComponent();
        label1.Text = labelText;

    }

кнопка пропуска

private void button1_Click(object sender, EventArgs e)
    {
        sqlcon.Open();
        SqlCommand cmdcurrent = sqlcon.CreateCommand();
        cmdcurrent.CommandType = CommandType.Text;
        cmdcurrent.Parameters.Add("@Title", SqlDbType.VarChar).Value = title;
        cmdcurrent.CommandText = "update tblQLCashier set status = 'missing' where queID = (select min(queID) from tblQLCashier where status = 'On process' and department = @Title)";
        cmdcurrent.ExecuteNonQuery();

        SqlCommand cmdnext = sqlcon.CreateCommand();
        cmdnext.CommandType = CommandType.Text;
        cmdnext.Parameters.Add("@Title", SqlDbType.VarChar).Value = title;
        cmdnext.CommandText = "update tblQLCashier set status = 'On process' , department = @Title where queID = (select min(queID) from tblQLCashier where status = 'Pending' and department ='')";
        cmdnext.ExecuteNonQuery();
        sqlcon.Close();

        sqlcon.Open();
        cmdnext.CommandText = "select queID from tblQLCashier where queID = (select min(queID) from tblQLCashier where department in ('', @Title) and status in ('Pending', 'On process'))";
        SqlDataReader reader = cmdnext.ExecuteReader();
        while (reader.Read())
        {
            label1.Text = reader[0].ToString();
            break;

        }
        sqlcon.Close();

        Lobbypage lp = new Lobbypage(label1);

    }

оба label1 в form1 и form2 должны одновременно обновляться и иметь одинаковый вывод

enter image description here

Ответы [ 3 ]

1 голос
/ 05 апреля 2019

вы можете создать одно свойство статической строки и назначить его обеим меткам.

1 голос
/ 05 апреля 2019

В форме 2

public Lobbypage(Label label)
{
    InitializeComponent();
    label1 = label;
}

В форме 1

Lobbypage lp = new Lobbypage(label1);

Так что же происходит?Передав label1 в конструктор Lobbypage, он создает новую переменную (label), которая является копией label1.«Хитрость» в том, что label1 фактически является ссылкой, поэтому копия также будет указывать на тот же объект метки.

0 голосов
/ 05 апреля 2019

Почему вы не делаете публичную метку, вот код, который работает для меня:

namespace WindowsFormsApp1
{
public partial class Form2 : Form
{
    static public Label label2 = new Label();

    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        label2.Location = new Point(20, 20);
        Controls.Add(label2);
        label2.Text = "mama";
    }
}
}

другая форма

namespace WindowsFormsApp1
{
public partial class Form1 : Form
{

    public Form1()
    {

        Form2 hi = new Form2();
        hi.Show();
        InitializeComponent();
    }

    private void button1_Click_1(object sender, EventArgs e)
    {
        Form2.label2.Text = "Mathman";

    }
}
}

Обязательно добавьте функции в обработчик.это означает не просто скопировать и вставить его. Нажмите дважды на форму, чтобы автоматически добавить функцию загрузки после клика до клика

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...