2015-04-17 20 views
-1

У меня есть 2 формы, Main и Kitchen.C# Передача строки из одной формы в другую

В Main У меня есть текстовое поле под названием detailName, мне нужно передать значение detailName.Text от Main до Kitchen к TextBox под названием orderBox.

Kitchen newKitchenForm = new Kitchen(); 
    newKitchenForm.OrderBox.Text = detailName.Text; 

Это мой код для него, но он, похоже, не работает.

Любая помощь будет оценена по достоинству.

Дополнительная информация:

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

Итак, после нажатия кнопки «lockOrder_In», я хочу, чтобы еда, которую они только что выбрали, была показана заказчику и на кухне. Вот мой код для этой кнопки.

private void lockOrder_Click(object sender, EventArgs e) 
    { 
     Dish_1.Text += Environment.NewLine + detailName.Text; 
     Price_1.Text += Environment.NewLine + detailPrice.Text; 

     // Show the order in the kitchen form 

     Kitchen newKitchenForm = new Kitchen(); 

     newKitchenForm.ordersBox.Text = detailName.Text; 
    } 

я на стороне клиента, чтобы работать, но порядок человек способен увидеть, что они заказали, но с другой форме «Kitchen» они не являются. Название продукта, которое показано в «detailName.Text» в форме «Main», не отображается в форме «Кухня» в «orderBox.Text».

+4

Вы можете уточнить «это не похоже на работу»? –

+1

Вы хотите передать текст в 'orderBox' или' OrderBox2'? Ваш вопрос и код не подходят. – Eminem

+0

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

ответ

0

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

0

Этого можно достичь легко, создав экземпляр формы 1 в форме 2. Это один из подходов.

Выполните следующие действия:

В Форме 1: Убедитесь, что ваш контроль общественности.

eg: txtForm1.Text = "Bangalore"; 

В форме 2:

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

Шаг 2: Получить значение элемента управления экземпляром формы 1.

eg: Form1 frm1 = new Form1(); 
    string Form1Value = frm1.txtForm1.Text 

для более подробной информации MSDN Link

+0

Пример кода в «шаге 2» - это то, что вы посоветуете в «шаге 1», создавая новый экземпляр формы. Это не сработает, потому что он не имеет доступа к правильному экземпляру. И зачем создавать «глобальную» форму, почему бы просто не передать значение конструктору во вторую форму? Или передать ссылку на первую форму в конструкторе? Или сделать государственную собственность на второй форме? Не просто делайте все глобальным, когда вам требуется немного более высокий объем значений, это вызовет проблемы * много. – David

Смежные вопросы