Как получить значение, содержащееся в классе другой формы / C# Windows Формы - PullRequest
0 голосов
/ 04 апреля 2020

Я пытался какое-то время, чтобы две формы обменивались данными друг с другом. В этом случае наследование данных из формы 2 в 1. Я пробовал несколько методов, и этот метод мне удалось реализовать лучше всего.

Проблема в том, что он не работает окончательно sh, во второй форме полученное значение всегда равно 0, конечно, это небольшая деталь, но я действительно не знаю, как с этим покончить.

Любая попытка помочь очень ценится:)

Форма 1:

using System;
using ...;

namespace Name
{

    public partial class Form1 : Form
    {
        cntr val = new cntr();
    }

    /// omited code that modifies val.count

    public class cntr
    {
        public int count_ = 0;

        public int count
        {
            get
            {
                return count_;
            }
            set
            {
                count_ = value;
            }
        }
    }
}

Форма 2:

using System;
using ...;

namespace Name
{

    public partial class Form2 : Form
    {
        cntr aye = new cntr();

        public Form2()
        {
            InitializeComponent();
        }

        private async void Read()
        {
            while (true) /// updating the .Text every 5 seconds
            {
                Box2.Text = aye.count;
                await Task.Delay(500); 
            }
        }
    }


}

1 Ответ

1 голос
/ 04 апреля 2020

Вы создали экземпляр класса cntr() два раза. Поэтому у вас есть два объекта, работающих в их собственном экземпляре, не зная, что другой уже создан.

Вы можете справиться с этим случаем, создав один общий класс. Создайте в своей основной форме класс cntr(), затем скажите своему второму классу, где находится ваш экземпляр.

namespace Name
{

    public partial class Form1 : Form
    {
        cntr val = new cntr();

        // Tell to your second form to use this shared object
        Form2 form2 = new Form2(val);
        form2.Show();
    }

    public class cntr { ... }

    public partial class Form2 : Form
    {
        private cntr _aye;

        public Form2(cntr sharedCntr)
        {
            // Save the shared object as private property
            _aye = sharedCntr;
            InitializeComponent();
        }

        private async void Read()
        {
            while (true)
            {
                Box2.Text = _aye.count.ToString();
                await Task.Delay(500);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...