2017-09-11 61 views
-3

私のC#プログラムの別のクラスの中で関数を作成しようとしていますが、このエラーが発生します。この機能には、TextLabelが必要です。'Form1.Label1'は保護レベルのためアクセス不能です

私のクラスのコード:私のメインプログラムの

form1 frm = new form1(); 
public void Menu() 
{ 
    frm.label1.Text = "test"; 
} 

コード:

public form1() 
{ 
    Commands obj = new Commands(); 
    InitializeComponent(); 
} 

がエラー:

CS0122 C# is inaccessible due to its protection level.

+5

エラーメッセージが本当に「C#はアクセスできません」と言った場合、私は非常に驚かれることと思います。おそらく 'label1'フィールドがプライベートなので、おそらく" label1はアクセス不可能 "と言われているのでしょうか?小さな文脈で話すことは難しいです。また、エラーメッセージがどの行に表示されているのかを表示するのに役立ちます。 –

+1

プライベートであるか保護されているものを参照しようとしている可能性はありますか? – Danieboy

+0

label1をデザイナーに公開します。 – Berkay

答えて

2

あなたForm1.Designer.csに行く場合は、あなたのコントロールことが表示されますデフォルトでprivateフィールドとして宣言されます。

private System.Windows.Forms.Label label1; 

フォーム外にアクセスする場合は、propertiesにする必要があります。 プロパティは、プライベートフィールドの値を読み取り、書き込み、または計算するための柔軟なメカニズムを提供するメンバです。

public System.Windows.Forms.Label Label1 { get; set; } 
+0

ありがとう、これは問題でした... im kina a newbですが、私は再びあなたに感謝しています! – Pretpacked

+0

ラベル自体にアクセスするのではなく、ラベルのテキストを取得/設定するプロパティを設定することもできます。 –

関連する問題