2012-11-07 137 views
2

我正在處理一個窗體應用程序,它有兩個窗口。在主窗口中,Form1創建了Treatment類的一個實例。我想通過該實例,一旦圖像被點擊到另一個窗口form2。到目前爲止,我有: Form1中:形式c之間傳遞對象#

public partial class Form1 : Form 
{ 

    private Treatment treatment; 

//method where i inistantiate the treatment 
private void processTreatment(int id, Button button) 
    { 
     treatment = new Treatment(wirelessResult, id); 
     Alarm alarm = new Alarm(count, treatment); 
     wirelessResult.GenerateNumber(); 
     alarm.setColor(); 
     events.add(alarm); 
     if (getResult(treatment) == true) 
     { 
      storeSuccess(button); 
     } 
     else if (getResult(treatment) == false) 
     { 
      storeFailed(button); 
     } 
    } 
// image clicked 
private void treatmentStation1_Click(object sender, EventArgs e) 
    { 

     Form2 secondForm = new Form2(treatment); 
     secondForm.Show(); 
    } 

和窗口2:

public partial class Form2 : Form 
{ 
    private Treatment treatment; 


    public Form2() 
    { 
     InitializeComponent(); 

    } 

    public Form2(Treatment treatment) 
    { 
     InitializeComponent(); 
     this.treatment = treatment; 
    } 
    } 
} 

我送1錯誤:錯誤1訪問性不一致:參數類型 'WasteTreatment.Treatment' 比少的方法訪問「WasteTreatment .Form2.Form2(WasteTreatment.Treatment)」

有人能幫助我解決這一問題?

+1

讓你的治療類公共 –

+3

@YograjGupta:這可能不是理想的解決方案,但它會糾正錯誤。 –

回答

1

private Treatment treatment只能在Form1之內使用,因爲您已將其標記爲private

我想糾正問題的最好辦法是這樣的:

Form2 secondForm = new Form2(new Treatment(wirelessResult, id)); 

,你可以讓wirelessResultidForm1私有成員。

+0

喜謝謝你的回答,它可能解決我的第一個問題,但現在我還有一個錯誤錯誤可訪問性不一致:參數類型「WasteTreatment.Treatment」比少的方法訪問「WasteTreatment.Form2.Form2(WasteTreatment.Treatment )'\t它與我的治療類有關嗎? – mikey

+0

你的「治療」類(無論它在哪裏)需要聲明爲「公共」。 –

+0

是的,我已經做到了,現在看起來它正在工作,謝謝。 – mikey

0

不一致的可訪問性意味着你的WasteTreatment.Treatment類是不可見的Form2

例如,如果Form2處於AssemblyBWasteTreatment.Treatment和並AssemblyAWasteTreatment.Treatment被標記爲internal,其中一類的w/o的改性劑將默認。 Form2將無法​​使用WasteTreatment.Treatment

沒有看到這個類,我只能說是嘗試使類public,看看是否有效。解決此問題的另一種方法是,如果WasteTreatment.Treatment實現的接口有Form2接受接口而不是具體對象,並確保接口也被標記爲public

+0

命名空間WasteTreatment { 級待遇 { 私人布爾finalStatus; private WirelessTreatmentResult結果; private int id; 私人字符串名稱; – mikey

+0

@lucaConfa默認情況下這個類是內部的,試試'public class Treatment {....}' –

+0

抱歉,我只是想向你展示治療類,不知道我知道什麼是assemblyA和assemblyB。所有的類都在同一個命名空間中。它有幫助嗎? – mikey