【问题标题】:Transferring objects from one Winform to antoher C#将对象从一个 Winform 传输到另一个 C#
【发布时间】:2014-06-17 22:24:09
【问题描述】:

我有一个很有趣的问题...

我有一个 Form,上面有一个 datagridview。从这个数据网格中,我选择了一个对象(在我的例子中是一个医学),当我点击“创建收据”按钮时,我将我的另一个 Form 称为“New Recipet”并且它坚持那个表格数据网格

现在的问题是我想在一个“会话”中传输更多对象,比如一张收据表上的更多项目。

这是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 上传输的数据网格之前,我还有一些其他查询)

我应该如何解决这个问题?

在第二个 FORM 或我想在数据网格中有多个项目的表单上,我可能应该有一个绑定列表,但是在传输 .SIngleOrDefault() 时我遇到了转换问题对象...

【问题讨论】:

  • 为了清楚起见,您问的是如何将多个对象发送到一个新表单,但一次一个?就像您不想将所有内容都传递给新表单的构造函数一样? p.s.克罗地亚语看起来非常有趣。
  • 是的,确切地说,当我点击第一个表单上的数据网格时,我发送第一个对象并使用该构造第二个表单,然后发送更多对象(当我点击数据网格表时)但是仍然将它附加到第二个表单数据网格,都在同一个

标签: c# winforms entity-framework-5


【解决方案1】:

我认为必须这样做;

像这样更改 New 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
}

在Recipet表单中的提交按钮上:

frm.CreateRec(arg1,arg2);

【讨论】:

  • 如果我有固定的参数也没关系,但是如果我从一个可以有 1、2、3 或更多行的数据网格(表)中选择它们,我会转移吗?
  • @user3732071 为此,您可以将选定的行项数组传递给其他表单。或者您可以根据需要编写一个类并将其作为参数传递
  • 是的,这就行了!您能帮我解决我遇到的另一个问题 -> 将多个选定项目添加到绑定列表吗?这是片段:i.imgur.com/WIYsPoi.png。我想将单击的当前项目添加到绑定列表,然后进一步传输整个列表
  • ^^ 发现了问题——我一直在将 ToList() 转移到 bindingList
  • @user3732071 抱歉迟到了。我一直在工作。很高兴它成功了^_^
猜你喜欢
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2012-01-10
相关资源
最近更新 更多