1

ユーザーがユーザー名と日付を入力し、データをデータベースに入力するボタンをクリックするプログラムがあります。

私が抱えている問題は、テキスト ボックスの日付データをメソッドの引数として BOL クラスに渡すことができないことです。次のエラーが表示されます。

私の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は、インスタンス メソッドではなくメソッドです。

メソッド TestParsing はclass ProgramLoginBOL、具体的なインスタンスではなく、次のように呼び出す必要があります。

ProgramLoginBOL.TestParsing(txtStartDate.Text);

静的メソッドは、インスタンスの特定の属性が必要ない場合に使用されます。

于 2012-04-18T18:19:04.477 に答える
4

それはあなたに変更を求めています:

busObject.TestParsing(txtStartDate.Text);

に:

ProgramLoginBOL.TestParsing(txtStartDate.Text);

TestParsingクラスの静的メソッドであるため、ProgramLoginBOL特定のインスタンスに関連付けられていません。

于 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 に答える