2012-04-18 99 views
1

我具有其中用戶輸入用戶名和日期,然後點擊按鈕將數據輸入到數據庫中的程序調用的方法。無法從另一個類

我遇到的問題是,我似乎無法通過文本框日期數據的方法我BOL類的說法。我得到以下錯誤:「會員‘P90XPRogramt.ProgramLoginBOL.TestParsing(字符串)’不能用一個實例引用來訪問;與類型名限定它,而不是」

這裏是我的UI層代碼:

public partial class ProgramLoginForm : Form 
{ 
    private ProgramLoginBOL busObject = 
     new ProgramLoginBOL();  

    //default constructor 
    public ProgramLoginForm(string dayNo) 
    { 
     InitializeComponent(); 
     busObject.InitializeConnection(); 
    } 

    private void btnBeginProgram_Click(object sender, EventArgs e) 
    { 
     busObject.UserName = txtEnterName.Text;    

     busObject.TestParsing(txtStartDate.Text);    

    } 

    //event handler to close program 
    private void btnExitProgram_Click(object sender, EventArgs e) 
    { 
     Application.Exit(); 
    }   
} 

這裏是我的BOL類的代碼:

class ProgramLoginBOL 
{ 
    //declare variables 
    string userName = ""; 

    //instantiate a connecttion object to Access database 
    OleDbConnection aConnection = 
     new OleDbConnection(
      "Provider=Microsoft.ACE.OLEDB.12.0;" + 
      "Data Source=P90XDatabase.accdb;"); 

    public ProgramLoginBOL() 
    { 
    } 

    //property for userName variable 
    public string UserName 
    { 
     get { return userName; } 
     set { userName = value; } 
    } 

    public static DateTime TestParsing(string datetext) 
    { 
     DateTime dt; 

     if (DateTime.TryParseExact(datetext, "d", null, 0, out dt)) 
     { 
      Console.WriteLine("Parsed to {0}", dt); 
     } 
     else 
     { 
      Console.WriteLine("Bad date"); 
     } 
     return dt; 
    } 

    public void InitializeConnection() 
    { 
     ProgramLoginDAL.InitializeConnection(aConnection); 
    } 
} 

我不知道它是什麼,告訴我做。按類型名稱我假設他們的意思是數據類型,所以我嘗試了以下內容:

string busObject.TestParsing(txtStartDate.Text); 

string.busObject.TestParsing(txtStartDate.Text); 

string.TestParsing(txtStartDate.Text); 

busObject.TestParsing(string txtStartDate.Text); 

這些都沒有奏效。我也嘗試使用DateTime而不是字符串。正如我所說,我不知道它希望我做什麼。

回答

1

靜態方法不能用一個類的實例被稱爲完全一樣的錯誤消息說。

P90XPRogramt.ProgramLoginBOL.TestParsing(txtStartDate.Text); 

對於未來的錯誤嘗試搜索錯誤代碼第一 - 通常MSDN文章包含的解釋和樣品一樣,在這種情況下CS0176

+0

我不知道的是,MSDN有錯誤代碼的解釋。我將來會這樣做。感謝您的幫助。 – 2012-04-18 18:25:35

4

您嘗試調用的方法是一個static - 方法,而不是一個實例-方法。

方法TestParsing應呼籲classProgramLoginBOL,而不是在一個具體的實例中,這樣的:當需要一個實例的沒有具體的屬性用於

ProgramLoginBOL.TestParsing(txtStartDate.Text); 

靜態方法。

+0

謝謝你的幫助。我會讓 – 2012-04-18 18:26:39

4

它要你改變:

busObject.TestParsing(txtStartDate.Text); 

到:

ProgramLoginBOL.TestParsing(txtStartDate.Text); 

由於TestParsingProgramLoginBOL類的靜態方法,而不是與特定的實例相關聯。

+0

謝謝您的幫助,進行相應的修改。我會做出相應的更改 – 2012-04-18 18:27:04

1

你的方法是靜態的,你不能使用類的一個實例來調用它。執行此

ProgramLoginBOL.TestParsing("text to pass"); 
+0

感謝您的幫助 – 2012-04-18 18:27:53

1

你可以調用與類名,而類對象 靜態方法所以儘量

ProgramLoginBOL.TestParsing(txtStartDate.Text); 
+0

感謝您的幫助。 – 2012-04-18 18:28:07