Статическая переменная и текстовое поле между двумя формами - PullRequest
0 голосов
/ 29 февраля 2012

Мне пришла в голову идея использовать статическую переменную для передачи данных между двумя формами с использованием MSVS 2010.

У меня сейчас проблемы с тем, как она работает.Form2 - это мой основной экран взаимодействия с пользователем, где элементы сканируются и отображаются в текстовом поле.Когда я использую Form4, я хочу иметь возможность вычитать элемент и отображать это описание в текстовом поле в Form2, не стирая предыдущие данные, которые были на экране Form2.

Вот пример кода того, что яиспользование в форме 4:

        else if (input_txtBox.Text == "E007C02A55EF937C")
        {
            secondForm.textBox2.Text = "Snickers Bar.................-$0.99" + Environment.NewLine;
            input_txtBox.Text = ""; // clears textBox1
            input_txtBox.Text = "";
            Form2.Subtotal = Form2.Subtotal - Form2.Candy_Bar;
            Form2.Tax = Form2.Candy_Bar * Form2.Taxrate - Form2.Tax;

Это после нажатия кнопки:

        Form2.Total = Form2.Subtotal + Form2.Tax;
        secondForm.textBox3.Text = Form2.Subtotal.ToString("#0.00");
        secondForm.textBox4.Text = Form2.Tax.ToString("#0.00");
        secondForm.textBox5.Text = Form2.Total.ToString("#0.00");

Переменные, используемые в Form4, объявляются в Form2 как общедоступное статическое десятичное число.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Мне пришла в голову идея использовать статическую переменную для передачи данных между двумя формами с использованием MSVS 2010.

Почему? Похоже, что либо Form2, либо Form4 (оба из которых должны иметь настоящие имена, указывающие их назначение) должны иметь ссылку на другое - или, альтернативно, оба должны иметь ссылку на общее модель данных, которая отвечает за передачу данных соответствующим образом.

Использование статического поля в качестве способа избежать правильного проектирования ОО, безусловно, является плохой идеей - это сэкономит ваше время в краткосрочной перспективе, но приведет к коду, который трудно следовать, трудно проверить, и испортит как как только вы думаете, что, возможно, вам нужно два экземпляра Form2, каждый из которых связан с экземпляром Form4 ...

0 голосов
/ 29 февраля 2012

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

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

Надеюсь, что это поможет.

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