2017-09-11 93 views
-3

我試圖在我的c#程序的另一個類中創建一個函數,但是出現此錯誤。該功能需要LabelText'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

謝謝,這是問題所在...我是一個新手,但即時學習再次感謝你! – Pretpacked

+0

您也可以擁有一個屬性來獲取/設置標籤的文本,而不是訪問整個標籤本身。 –

相關問題