2012-04-18 97 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