Перенос объектов из одной Winform в другой C#

#c# #winforms #entity-framework-5

#c# #winforms #entity-framework-5

Вопрос:

У меня довольно интересная проблема…

У меня есть одна форма, в которой у меня есть datagridview. Из этой сетки данных я выбираю объект (в моем случае лекарство), и когда я нажимаю на кнопку «Создать рецепт», я вызываю свою другую форму под названием «Новый рецепт», и она привязывается к этой форме datagrid

Теперь проблема в том, что я хочу передать больше объектов за один «сеанс», например, больше товаров в одной форме квитанции.

Вот код для FORM1

 private void btnIzdavanjeRacuna_Click(object sender, EventArgs e)
{
   hzzoLijekovi selektiraniLijek = hzzoLijekoviBindingSource.Current as hzzoLijekovi;
   if (selektiraniLijek != null)
   {
      using (var db = new appotekaDBEntities())
      {
         var lijekApoteka = (from l in db.lijekovi
                             where l.serijskiBroj == selektiraniLijek.serijskiBroj
                             select l).SingleOrDefault();

         if (lijekApoteka == null)
         {
            MessageBox.Show("Lijek ne postoji u bazi", "Upozorenje");
         }
         else if (lijekApoteka.kolicina == 0)
         {
            MessageBox.Show("Lijek ne postoji trenutno na zalihi", "Upozorenje");
         }
         else
         {
            FormRacuniNovi noviRacunForma = new FormRacuniNovi(lijekApoteka);
            noviRacunForma.Show();
         }
      }
   }
}
  

Извините, это на хорватском языке, но вы должны понимать логику. Итак … все работает для элемента или объекта

В другой ФОРМЕ » У меня есть

 private lijekovi lijekNaRacun;
public FormRacuniNovi (lijekovi lnr)
{
   InitializeComponent();
   lijekNaRacun = lnr;
}

private void FormRacuniNovi_Load(object sender, EventArgs e)
{
   lijekoviBindingSource.DataSource = lijekNaRacun;
}        
  

Я думаю, что мне, вероятно, следует перенести список привязок, но допустим, я хочу передавать один элемент за другим, потому что в противном случае это сложно (у меня есть несколько других запросов, прежде чем я перейду к сетке данных, которую я хочу перенести в FORM1)

Как мне решить эту проблему?

Во второй ФОРМЕ или форме, в которой я хочу иметь несколько элементов в datagrid, у меня, вероятно, должен быть список привязок, но тогда у меня возникает проблема с преобразованием при передаче a .Объект SingleOrDefault()

Комментарии:

1. Просто для ясности, вы спрашиваете, как отправить несколько объектов в новую форму, но по одному за раз? Как вы не хотите передавать все конструктору новой формы? p.s. Хорватский язык выглядит очень интересно.

2. Да, точно, когда я нажимаю на сетку данных в ПЕРВОЙ форме, я отправляю первый объект и с его помощью создаю вторую форму, а затем отправляю больше объектов (когда я нажимаю в таблице datagrid), но все равно добавляю его во вторую форму datagrid, все в том же

Ответ №1:

Я думаю, что это должно сделать ;

Измените конструктор новой формы Recipet следующим образом :

 Form1 frm;
public New_Recipet(Form1 sender)
{
    frm= sender;
}
  

Создайте функцию в Form1.cs :

 public void CreateRec(string argThatYouNeed,string anOtherArgThatYouNeed)
{
    //Do Whatever You Want With Args
}
  

и нажмите кнопку отправить в форме рецепта :

 frm.CreateRec(arg1,arg2);
  

Комментарии:

1. Это было бы нормально, если бы у меня были фиксированные аргументы, но что, если я выберу их из Datagrid (таблицы), которая может содержать 1,2,3 или более строк, которые я передаю?

2. @user3732071 Для этого вы можете передать массив элементов выбранных строк в другую форму. Или вы можете написать класс для своих нужд и передать его в качестве параметра

3. Да, это поможет! Не могли бы вы помочь мне с другой проблемой, с которой я столкнулся -> добавление нескольких выбранных элементов в список привязок? Вот снип: i.imgur.com/WIYsPoi.png . Я хочу добавить текущие элементы, которые я нажимаю на список привязки, а затем переношу весь список дальше

4. ^^ Обнаружена проблема — я переношу ToList() в BindingList

5. @user3732071 Извините за опоздание. Я работал. Я рад, что это сработало ^ _ ^