2012-11-07 84 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