簡體   English   中英

c#非靜態方法需要對象引用

[英]c# An object reference is required for the non-static method

我想在靜態方法中使用文本框中的文本,該方法在我的SQL數據庫中顯示一列。 我怎樣才能做到這一點? 如果我執行下面的代碼,我有這個錯誤:

非靜態方法需要對象引用。

這是我的靜態方法:

static void OnTagsReported(ImpinjReader sender, TagReport report)
        {

        SqlConnection Cn;
        SqlCommand Cmd;
        //SqlCommand Cmd1;

        Cn = new SqlConnection(@"Data Source=DESKTOP-    ODCFVR1\SQLEXPRESS;Initial Catalog=RFID;Integrated Security=True");
        Cn.Open();

         // This event handler is called asynchronously 
        // when tag reports are available.
        // Loop through each tag in the report 
        // and print the data.
        foreach (Tag tag in report)
        {

            MessageBox.Show ("voici l'antenne :"+ tag.AntennaPortNumber +", EPC :"+ tag.Epc);

            Cmd = new SqlCommand ("INSERT INTO EPC (Epc_CODE) values('" + tag.Epc + "')", Cn);
            Cmd.ExecuteNonQuery();
            SqlCommand Cmd1 = new SqlCommand();
            Cmd1.CommandText = " select * from Epc Where EPC_code = '" +     tag.Epc + "' ";
            Cmd1.Connection = Cn;
            String result = " ";
            Cmd1.ExecuteNonQuery();
            result = Cmd1.ExecuteScalar().ToString();
            textBox5.Text = result; // here is my problem


            Cn.Close();
        }

}

謝謝!

您正在靜態方法中引用實例成員。 你可以:

  • return Cmd1.ExecuteScalar().ToString(); 並在調用methdo中設置文本框文本
  • 或者傳遞一個設置文本框文本的Action<string>委托
  • 使您的方法成為實例方法(刪除static修飾符)

由於您的方法看起來像某種事件處理程序,我不會讓它靜態。

簡介:您必須刪除對非靜態成員(文本框)的訪問權限或使您的方法非靜態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM