2013-03-01 97 views
1

Visual C#2008 express。 Windows窗體;兩個文本框和一個按鈕。在cmdEnter_Click事件中,我想檢查ValidateForm類中的布爾變量是否爲真(以處理文本框是否被清除)。無法從另一個類訪問變量:無效的表達式項'public'

private void cmdEnter_Click(object sender, EventArgs e) 
{ 
    ValidateForm(); 
    txtName.Clear(); 
    txtAge.Clear(); 
} 

public void ValidateForm() 
{ 
    bool bValidName = ValidateName(); 
    bool bValidAge = ValidateAge(); 
    if (bValidName && bValidAge) 
      MessageBox.Show("Entry will be added");    
    else 
      MessageBox.Show("Please enter valid data"); 
} 

我改變了ValidateFrom()修飾符從私有到公有,然後把公衆的布爾變量的前面,這樣我就可以acccess他們,但我收到「無效的表達式項公共」的錯誤。我的理解是,如果變量是公開的並且在公開課程中,我應該可以從任何地方訪問它?

+2

該代碼不會顯示給定的錯誤消息。你能否多發一些周圍的代碼? – 2013-03-01 19:41:08

回答

3

在方法內部聲明的變量只能在該方法內部使用,不管該類是否爲public。

如果您想從公共類外部訪問變量,請使用類級變量。在你的方法之外聲明它。公共/私人修飾符在方法中無效,它們需要在類級別使用。

public bool bValidName; 

public void ValidateForm() 
{ 
    bValidName = ValidateName(); 
    ... 

取決於你想要做什麼,你可能想改爲一個屬性,你可以在get/set上使用修飾符。

public bool bValidName { get; set; } 
+0

謝謝。在click事件中,我希望能夠說出變量是否爲true,然後清除相應文本框的文本。 – KFP 2013-03-01 19:52:03

+2

如果他們想讓它成爲一個屬性,我會建議遵循命名約定並使用'ValidName' – CAbbott 2013-03-01 19:53:25

+0

@KFP,我不知道爲什麼你需要訪問類之外的變量,但代碼仍然可以工作你寫的方式。唯一的區別是你正在改變範圍和訪問權限。正如CAbbot所說,公共財產的命名約定不使用駱駝套裝。 – Brandon 2013-03-01 19:55:35