2014-01-20 29 views
1

環境:Visual Studio 2008中,C#,SQL服務器,Windows的發展,多用戶,新的開發複製方法形成

我在form A的方法,我用它來有顯示文本信息。

此外,我有一個按鈕,單擊時顯示另一個窗體(窗體B)。

Form Bfrm.ShowDialog();

Form B上有相同的文本框具有相同名稱創建的,它們是相同的(複製並從形式粘貼甲

我想使用在表格的方法A顯示信息Form B,而不是將方法從form A複製粘貼到form B

我在中做了方法public並從from B中調用它,但form B的文本框中沒有顯示任何內容。爲什麼?我沒有得到任何錯誤。

我是否應該保持簡單並將form A的方法拷貝到表格B中,而不是從form B調用form A中的方法?這是我能夠實現它的唯一方法。


表單A用於顯示客戶信息,表單B用於編輯客戶信息。

我傳遞和返回表單之間的信息,這一切工作。

表格並不完全相同,即表單B沒有用於客戶筆記的文本框,它們以單獨的形式編輯。

謝謝您的輸入。

+0

來自'表格A'的方法在'表格B'中不起作用,因爲'controls'在兩種表格中都不相同。在你的問題中加入一些代碼,這可能會幫助我們爲相同的邏輯創建通用方法。 –

回答

2

你應該使用一個信息類,並從它中檢索數據,它們都以表格A和表格B 不使用重複的代碼,只需使用另一個類爲邏輯\信息。

你可以閱讀更多關於它here

0

製作,其成員代表了數據在這兩種形式中顯示的模型類。在Visual Studio 2008中,我相信支持基於對象創建項目數據源。從模型類創建數據源。然後,在這兩種形式中,添加一個綁定源。將源的數據類型設置爲項目數據源。然後,設計者會讓你從綁定源中爲每個控件選擇綁定。最後,在表單的構造函數中,接受模型類實例,並將綁定源的數據源設置爲該實例。

0

即使您在調用formA時有相同的文本框,但您只是更改了formA的實例,這意味着只有formA中的文本框發生了更改。

你必須明白,每個類都有自己的實例與另一個分開。

這並不意味着你不能訪問formA中的formB文本框。我可以看到你想鞏固;如果我沒有記錯你在備考方法已經是這樣的:

public void methodA(Customer customer) 
{ 
textboxName = customer.Name; 
textboxAddress = customer.Address; 
} 

如果你不想重複這個那時,我能想到的另一種方法是:

1)創建所有重複屬性的接口。

public interface ICustomerForm 
{ 
    string Name {get; set;} 
    string Address {get; set;} 
} 

2.)有2種形式的接口。

public class FormA : Form, ICustomerForm 
{ 
    public string Name 
    { 
     get 
     { 
     return _textBoxName.Text; 
     } 
     set 
     { 
     _textBoxName.Text = value; 
     } 
    } 

}

執行相同的formB

3)創建一個靜態輔助類,你只通過客戶類。 e.g:

public static class FormHelper 
{ 
    public static UpdateCustomerInfo(ICustomerForm form, Customer customer) 
    { 
     form.Name = customer.Name; 
     form.Address = customer.Address; 
    } 
} 

4)在您的兩種形式只是叫助手類和傳遞它本身作爲第一個參數和客戶類作爲第二個參數。 //形式A中的方法 public void formA() { FormHelper.UpdateCustomerInfo(this,customer); }

//Method in formB 
public void formB() 
{ 
    FormHelper.UpdateCustomerInfo(this, customer); 
} 

這樣,你只需要在你的形式的一行代碼和信息的設置是對綜合輔助類。