如何从Form类调用方法?

时间:2013-09-10 09:25:34

标签: c# mysql

现在我将这个代码放在一个名为HelperClass的类中:

class HelperClass : CollegeSystem.GUI
    {

        public void selectStudent()
        {
             MySqlConnection conn; // connection object;
        string connstring = "server=localhost;user Id=root;database=collegesystem;Convert Zero Datetime=True ";

            try
            {
                conn = new MySqlConnection(connstring);
                conn.Open();
                MySqlCommand myCommand = new MySqlCommand("SELECT * FROM person", conn);
                MySqlDataReader myReader;
                myReader = myCommand.ExecuteReader();
                cmbTable.Items.Clear();
                while (myReader.Read())
                {
                    cmbTable.Items.Add(myReader["personID"] + " | " + myReader["firstName"] + " | " + myReader["lastName"] + " | " + myReader["address"] + " | " + myReader["phoneNumber"] + " | " + myReader["postCode"] + " | " + myReader["dateOfBirth"]);
                }
            }

            catch (Exception err)
            {//handle the error with a message
                lblInfo.Text = " Error reading the database.";
                lblInfo.Text += err.Message; ;
            }

            finally
            {

            }

我想从我的表单中调用它,但它不起作用:

 private void fillcomboBox()
 {
     selectStudent();
 }

当前上下文中不存在名称“selectStudent”

我把它放在表格的顶部:

 public partial class GUI : Form, College_System.HelperClass
我错过了什么吗?

PS。为什么cmbTablelblInfo由于其保护级别而无法访问? 谢谢。

3 个答案:

答案 0 :(得分:1)

默认情况下,该属性是私有的。如果你想在herited classe中使用,你可以选择:public protected,conteneur,protected internal

在你的情况下我建议公开

 public class HelperClass : CollegeSystem.GUI

答案 1 :(得分:1)

  

公共部分类GUI:Form,College_System.HelperClass

你不能这样做。你的行

public partial class GUI : Form, College_System.HelperClass

应该是

public partial class GUI : Form

然后你可以像

一样打电话
College_System.HelperClass c = new College_System.HelperClass();
c.selectStudent();

答案 2 :(得分:1)

此代码存在多个问题。

  1. 您有一个类和一个实例方法,并且您直接调用该方法。您应该创建类的实例并调用方法。

  2. 检查类定义和调用是否在同一名称空间中。如果没有,您应该将类​​定义为internal / public,并在调用代码页中包含名称空间。

  3. 除非在同一类(帮助者)中定义标签,否则无法访问标签

  4. 通常,帮助程序类是独立的类,您可以将数据传递给其方法并获取结果进行处理。例如,您可以尝试以下内容:

    class myForm : Form
    {
        protected void OnClick()
        {
            try
            {
                var data = Helper.SelectStudent();
                cmbTable.Items.AddRange(data);
            }
            catch (Exception ex)
            {
                lblInfo.Text = " Error reading the database.";
                lblInfo.Text += err.Message; ;
            }
        }
    }
    
    class HelperClass
    {
        public static List<string> SelectStudent()
        {
            List<string> data = new List<string>();
            MySqlConnection conn; // connection object;
            string connstring = "server=localhost;user Id=root;database=collegesystem;Convert Zero Datetime=True ";
            conn = new MySqlConnection(connstring);
            conn.Open();
            MySqlCommand myCommand = new MySqlCommand("SELECT * FROM person", conn);
            MySqlDataReader myReader;
            myReader = myCommand.ExecuteReader();
            cmbTable.Items.Clear();
            while (myReader.Read())
            {
                data.Add(myReader["personID"] + " | " + myReader["firstName"] + " | " + myReader["lastName"] + " | " + myReader["address"] + " | " + myReader["phoneNumber"] + " | " + myReader["postCode"] + " | " + myReader["dateOfBirth"]);
            }
            return data;
        }
    }