У меня такая ситуация: в моей форме Order
есть поле со списком со многими продуктами внутри. ожидается, что пользователь может добавлять продукты в поле со списком для использования в Order
, но это делается с помощью другой формы, называемой ProductAdd
, в основном созданной с помощью текстового поля, где пользователь вводит название продукта, и оно добавляется с помощью кнопка. Поскольку у меня нет доступа к полю со списком в форме Order
, когда я нахожусь в форме ProductAdd
, я создал метод в Order
, который добавляет в поле со списком переданный продукт.
Строка не добавляется в поле со списком в другой форме.
Это метод для работы в поле со списком
public void addProductInCbb(string newProduct)
{
cbbProdotti.Items.Add(newProduct);
}
Это метод в другой форме ProductAdd
для добавления строки в мой cbb
private void btnConfirmNewProduct_Click(object sender, EventArgs e)
{
Order o = new Order(new Form1()); //that's because I think I need an instance of Order to call the method... is that correct?
String newProduct= txtNewProduct.Text; //get product string from txt
//boring checks to say if product already exists
bool found = false;
ArrayList products= o.getProducts();
foreach(String product in products)
{
if (product.Equals(newProduct)) found = true;
}
if (!found)
{
o.addProductInCbb(newProduct); //method call from Order
MessageBox.Show("Success!","", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else MessageBox.Show("Product already exists!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
-РЕДАКТИРОВАТЬ- Я сделал странный конструктор «Order o = new Order(new Form1())», потому что: для вызова addProductInCbb(string) мне нужен экземпляр Order, НО, в свою очередь, конструктору Order нужен параметр Form1, потому что, когда Order завершен , создается PDF-файл со всеми данными как из form1, так и из формы заказа... Может ли это вызвать мою проблему?
Для этого в Top 5 повторяющихся вопросов вы можете использовать, по вашему мнению: одноэлементные формы, статические элементы данных, события, шаблон статического метода запуска, конструктор с параметрами и т. д.
@OlivierRogier Но на самом деле я сделал метод
addProductInCbb(newProduct)
, который представляет собой своего рода «набор» или что-то в этом роде. Почему тогда не работает?Лично я создаю все свои формы с одним экземпляром как синглтоны. И когда мне нужно несколько экземпляров форм, я использую технологии, упомянутые в двух экземплярах, в зависимости от ситуации. Что касается вашего кода, я нашел его странным, и мне трудно понять, что вы пытаетесь сделать. Вам нужно изучить обычные модели и выбрать ту, которая лучше всего соответствует вашим потребностям: в основном, статический метод запуска или передача ссылки на текущую форму или желаемый элемент управления или элемент данных во вновь созданный один конструктор, или подписка на событие последний. Использование синглетонов делает взаимодействие чистым, если это уместно.
@OlivierRogier да, на самом деле,
new Order(new Form1())
не убедил меня с самого начала ... но я сделал это, потому что: для вызоваaddProductInCbb(string)
мне нужен экземплярOrder
, НО, в свою очередь, конструкторOrder
нуждался вForm1
, потому что, когда заказ выполнен, создается PDF-файл со всеми данными как из формы 1, так и из формы заказа...Вам нужен экземпляр формы и вы не можете закрыть форму. См. мой проект с двумя формами: coderhelper.com/questions/34975508/…
Я создаю новый объект... Где я не прав?? Я не могу понять, все ваши примеры в основном сделаны с использованием gets, но для того, чтобы использовать Gets, вам нужен экземпляр, и я создал его.. так что еще?