2013-01-23 48 views
0

什么我尝试做:复制粘贴从一种形式到其他C#

  1. 搜索产品按条码上Form1形式;
  2. ,如果它不能找到:
    1.打开Inventory形式 2.搜索产品的名称或描述
    3.在ListView click上找到的产品复制其条形码粘贴到Form1条形码文本框。

所有这些都是正确完成的。问题是,我每次添加产品Inventory形成一个Form1被打开。

的值不在同一Form1处理,因此假设我出售4种产品:

  • 它们的2通过Form1条形码搜索加入
  • 它们的2通过Inventory搜索形式加入

最后我得到3个开放的Form1表格,其中一个带有2个产品和两个带有单个产品的表格(通过Inventory表格添加)。我需要他们全在一起。

谢谢

// ------------------------- Form1 ------------- -------------------------------

private void btnInventory_Click(object sender, EventArgs e) 

    { 
     Inventory Inventory = new Inventory(); 
     Inventory.Show(); 
    } 



private string _theValue; 

    public string TheValue 
    { 
     get 
     { 
      return _theValue; 
     } 
     set 
     { 
      _theValue = value; 
      txtItems.Text = value; 

     } 
    } 

// ---------- - - - - - - - - - -库存 - - - - - - - - - - - - - - - ---

private void ShowForm1() 
    { 

     string value = label9.Text; 
     Form1 newForm = new Form1(); 
     newForm.TheValue = value; 
     this.Close(); 
     newForm.ShowDialog(); 
    } 



private void lvList_Click(object sender, EventArgs e) 

    { 
     label9.Text = lvList.SelectedItems[0].SubItems[0].Text; 
     this.ShowForm1(); 

    } 

对不起˚F或延迟,我不得不等待8小时再发布

感谢您的答复。

我只是去尝试 Form1中

private void btnInventory_Click(object sender, EventArgs e) 
    { 

     Inventory _inv = new Inventory(); 
     if (DialogResult.OK == _inv.ShowDialog()) 
      { 
       txtItems.Text = _inv.fugi; 
      } 

    } 

和库存表

private string test; 
     public string fugi 
     { 
      get { return test; } 
      set { test = label9.Text; } 
     } 



private void lvList_Click(object sender, EventArgs e) 
     { 

      label9.Text = lvList.SelectedItems[0].SubItems[0].Text; 
      this.DialogResult = DialogResult.OK; 
      this.Close(); 


     } 

txtItems。文字不从库存的形式得到测试的价值

+0

请检查我的更新答案,你可能会发现你可以发表评论给我的答案 – Sayse

回答

1

它打开一个新的对话框,因为你告诉它在ShowForm1,个人如下

private void btnInventory_Click(object sender, EventArgs e) 
{ 
    Inventory _inv = new Inventory(); 
    if(DialogResult.OK == Inventory.ShowDialog()) 
    { 
      valueIWantToSet = _inv.Accessor; 
    } 
} 

访问者你会我会改变你的btnInventory点击需要让自己类似于

public TypeOfVar Accessor 
{ 
    get{return m_privateVariableThatIWillMakeAndSetToMyBarcode;} 
} 

编辑: 一旦你已经得到了你的条码的价值,你需要设置DialogResult如下

this.DialogResult = DialogResult.OK; 

,然后设置你想关闭您的形式

EDIT2之前访问条形码变量:(!可能需要重命名此方法) 你ShowForm1将结束与此类似

{ 
this.DialogResult = DialogResult.OK; 
m_myVar = SelectedItem..; 
this.Close; 
} 

更新应答

你是STI由于您没有正确使用set属性,因此会出现问题,您的获取状况良好。 c#中有一个名为value的关键字,应该用于setter。该值将采取什么是对的右侧值=符号..你可以认为它像这样...

fugi = label9.Text

在上面的线,fugi使用你的属性的getter以获得需要设置为label9.Text的值。 =符号表示您打算使用该属性的setter,并将值value设置为label9.Text

属性具有getter和setter使用,所以你不必提供地方你不喜欢,然后可以到刚刚设置的选项,或根据需要得到这个变量访问底层变量。

这意味着您的问题仍然存在,您尚未设置值test,它仍然是默认的字符串值。 所以你有几种方法来解决你的问题。

第一种方法是为label9.Text提供一个getter并删除对您的私有变量的需求。

public string Fugi //Properties should really start with capital letter 
{ 
    get{return label9.Text;} 
} 

二是设置测试的价值,你打电话之前在btnInventoryClick你的getter和删除setter方法如方法2,但也变化出

private void lvList_Click(object sender, EventArgs e) 
{ 
    test = label9.Text; 

和第三IST设置test Fugi的设置方法如下,以允许在其他地方设置此测试变量。

set{text = value;}