2

私は2つのウィンドウを持つフォームアプリケーションに取り組んでいます。メインウィンドウで、Form1クラスTreatmentのインスタンスを作成します。画像がクリックされたら、そのインスタンスを他のウィンドウform2に渡したいと思います。これまでのところ:Form1:

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();
    }

およびform2:

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)'よりもアクセスしにくいです

誰かが私がこれを修正するのを手伝ってくれる?

4

2 に答える 2

1

private Treatment treatmentForm1をマークしたため、内でのみ使用できますprivate

問題を修正する最良の方法は次のようなものだと思います。

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

のメンバーを作成wirelessResultおよび非公開にすることができます。idForm1

于 2012-11-07T04:26:13.770 に答える
0

一貫性のないアクセシビリティは、WasteTreatment.Treatmentクラスが に表示されないことを意味しますForm2

たとえば、Form2is inAssemblyAおよびWasteTreatment.Treatmentin でAssemblyBあり、WasteTreatment.Treatmentとしてマークされているinternal場合、デフォルトでは oa 修飾子を持たないクラスになります。 Form2使えないだろうWasteTreatment.Treatment

そのクラスを見なくても、私が言えることは、クラスpublicを作成してみて、それが機能するかどうかを確認することだけです。この問題を解決する別の方法はWasteTreatment.Treatment、インターフェイスを実装する場合Form2、具体的なオブジェクトではなくインターフェイスを受け入れ、インターフェイスpublicも同様にマークされていることを確認することです。

于 2012-11-07T04:27:29.743 に答える