2013-07-07 127 views
0

好的這是我想要的。我創建了一個類如何將價值從一種形式轉移到另一種形式?

public class docname 
    { 
     private string doctname; 

     public string Doctname 
     { 
      get { return doctname; } 
      set { doctname = value; } 
     } 
    } 

和我在一個形式

public string name; 
docname dc = new docname(); 
dc.Doctname = name; 

使用它,當我以另一種形式檢查值我得到一個空值。這背後的原因是什麼?

我是C#的初學者。

+0

你什麼時候檢查出其它形式的價值?迴應哪個事件? – Tarik

+0

我使用loadevent來檢查值,但它調試時顯示爲空。 –

+1

這裏的名字沒有賦值。所以它顯示爲空。下一個案例是你的第二種形式,如果你創建新的實例,那麼你看不到先前的值。如果你需要看到它的第二種形式,那麼你需要把它作爲靜態 – DevT

回答

2

那麼,在你的代碼示例中,你實際上並沒有給public string name變量分配任何東西,所以它將爲空,直到你給它賦值爲止。假設這只是一個錯字,您需要確保您的兩個表單都指的是您的DocName類的同一個實例(只在代碼中創建一次new DocName(),然後將該引用傳遞給這兩個表單)。

Form myForm1 = new Form(); 
Form myForm2 = new Form(); 
DocName dn  = new DocName(); 
myForm1.docName = dn; 
myForm2.docName = dn; 
dn.DoctName  = "SomeDocumentName.txt"; 

MessageBox.Show(myForm1.docName.DoctName); // "SomeDocumentName.txt" 
MessageBox.Show(myForm2.docName.DoctName); // "SomeDocumentName.txt" 

因爲只有一個DoctName類的實例,所以無論哪種形式調用它,該類的屬性都將保留。

+0

謝謝,幫助 –

0

公共字符串名稱; < --- 名稱= 「等等」; < ---額外的代碼 DOCNAME DC =新DOCNAME(); dc.Doctname = name;

那麼,根據你的代碼,名爲「name」的變量爲空。

+0

你能解釋一下怎麼能這樣幫助我嗎? –

+0

根據你的代碼,變量「name」只是被聲明並沒有賦值。您必須爲名稱分配一個值。例如:name =「whatever」;否則,名稱的默認值爲空。 – Tarik

相關問題