1

我有一个程序,用户在其中输入用户名和日期,然后单击将数据输入数据库的按钮。

我遇到的问题是我似乎无法将文本框日期数据作为方法中的参数传递给我的 BOL 类。我收到以下错误:“无法使用实例引用访问成员 'P90XPRogramt.ProgramLoginBOL.TestParsing(string)';改为使用类型名称对其进行限定”

这是我的 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 而不是字符串。正如我所说,我不知道它要我做什么。

4

5 回答 5

4

您尝试调用的方法是static-method 而不是实例方法。

应该在class ProgramLoginBOL而不是在具体实例上调用 TestParsing 方法,如下所示:

ProgramLoginBOL.TestParsing(txtStartDate.Text);

当不需要实例的特定属性时使用静态方法。

于 2012-04-18T18:19:04.477 回答
4

它希望你改变:

busObject.TestParsing(txtStartDate.Text);

到:

ProgramLoginBOL.TestParsing(txtStartDate.Text);

由于TestParsingProgramLoginBOL类的静态方法,并且不与特定实例相关联。

于 2012-04-18T18:19:06.730 回答
1

正如错误消息所说,不能用类的实例调用静态方法。

P90XPRogramt.ProgramLoginBOL.TestParsing(txtStartDate.Text);

对于未来的错误,请先尝试搜索错误代码 - 通常 MSDN 文章包含解释和示例,如本例中的CS0176

于 2012-04-18T18:18:55.103 回答
1

您的方法是静态的,您不能使用该类的实例来调用它。做这个

ProgramLoginBOL.TestParsing("text to pass");
于 2012-04-18T18:21:13.843 回答
1

您可以使用类名而不是类对象调用静态方法,因此请尝试

ProgramLoginBOL.TestParsing(txtStartDate.Text);
于 2012-04-18T18:23:37.423 回答