2013-01-23 49 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;}