winform中窗体与创建类class如何传值?

时间:2022-07-08 00:59:50
创建类中有如下代码,现在我想在form1中接收数组Arr的值,该如何做

class odb
    {
        public void Conn()
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\DataBase\MyDB.mdb";
            OleDbConnection odcConnection = new OleDbConnection(strConn);
            odcConnection.Open();
            OleDbCommand odCommand = odcConnection.CreateCommand();
            odCommand.CommandText = "select * from guojia";
            OleDbDataReader odrReader = odCommand.ExecuteReader();
            ArrayList Arr = new ArrayList();
            while (odrReader.Read())
            {
                Arr.Add(odrReader["1"].ToString());
            }
            odrReader.Close();
            odcConnection.Close();
         
        }
    }

5 个解决方案

#1


public void Conn() 改成:public ArrayList Conn() 函数最后return Arr;
 

#2


如果只是实现一个函数(或者一个单一的接口),何必要用到类?类是面向对象的产物,作为一个完整的对象,理论上应该有构造函数、属性、方法、实现接口等元素,它才可以作为独立的“工人”,接受命令、实现特定功能(或者存储数据)。你的这个“类”,如果想做到与Form进行交互,就应该留有一些属性或者集合(索引亦可),让窗口进行访问,而不是关起门来干自己的活。

比如:
public string result
{
    get{ }
    set{ }
}
你将读取到的某个值给result记录下来,其他的对象就可以调用object.result来访问这个结果。
否则的话,你完全可以不使用“类”,直接让函数在窗体中工作,Arr的功能就直接实现了,但显然,这不符合面向对象的思路,也与楼主的初中相悖。

#3



//调用
odb db = new odb();
ArrayList arrayList =  db.Conn();

class odb
    {
        public ArrayList  Conn()
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\DataBase\MyDB.mdb";
            OleDbConnection odcConnection = new OleDbConnection(strConn);
            odcConnection.Open();
            OleDbCommand odCommand = odcConnection.CreateCommand();
            odCommand.CommandText = "select * from guojia";
            OleDbDataReader odrReader = odCommand.ExecuteReader();
            ArrayList Arr = new ArrayList();
            while (odrReader.Read())
            {
                Arr.Add(odrReader["1"].ToString());
            }
            odrReader.Close();
            odcConnection.Close();
         return arr;
        }
    }

#4


引用 1 楼 qbilbo 的回复:
public void Conn() 改成:public ArrayList Conn() 函数最后return Arr;
 

那么form1中如何接收呢

#5


引用 4楼我是你的主体 的回复:
Quote: 引用 1 楼 qbilbo 的回复:

public void Conn() 改成:public ArrayList Conn() 函数最后return Arr;
 

那么form1中如何接收呢
已经很明确告诉你了,ArrayList arrayList =  db.Conn();
这就是在Form1中调用的方式,arrayList里存的就是你想要的值。
你是随便一用,还是要做一些开发?为什么不学一学基础的东西呢?总是“想实现什么功能”的时候就来网上或论坛找代码,你有多少精力和技术分让你挥霍,学习不是一件多麻烦的事,起码比你来等答案要容易。

#1


public void Conn() 改成:public ArrayList Conn() 函数最后return Arr;
 

#2


如果只是实现一个函数(或者一个单一的接口),何必要用到类?类是面向对象的产物,作为一个完整的对象,理论上应该有构造函数、属性、方法、实现接口等元素,它才可以作为独立的“工人”,接受命令、实现特定功能(或者存储数据)。你的这个“类”,如果想做到与Form进行交互,就应该留有一些属性或者集合(索引亦可),让窗口进行访问,而不是关起门来干自己的活。

比如:
public string result
{
    get{ }
    set{ }
}
你将读取到的某个值给result记录下来,其他的对象就可以调用object.result来访问这个结果。
否则的话,你完全可以不使用“类”,直接让函数在窗体中工作,Arr的功能就直接实现了,但显然,这不符合面向对象的思路,也与楼主的初中相悖。

#3



//调用
odb db = new odb();
ArrayList arrayList =  db.Conn();

class odb
    {
        public ArrayList  Conn()
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\DataBase\MyDB.mdb";
            OleDbConnection odcConnection = new OleDbConnection(strConn);
            odcConnection.Open();
            OleDbCommand odCommand = odcConnection.CreateCommand();
            odCommand.CommandText = "select * from guojia";
            OleDbDataReader odrReader = odCommand.ExecuteReader();
            ArrayList Arr = new ArrayList();
            while (odrReader.Read())
            {
                Arr.Add(odrReader["1"].ToString());
            }
            odrReader.Close();
            odcConnection.Close();
         return arr;
        }
    }

#4


引用 1 楼 qbilbo 的回复:
public void Conn() 改成:public ArrayList Conn() 函数最后return Arr;
 

那么form1中如何接收呢

#5


引用 4楼我是你的主体 的回复:
Quote: 引用 1 楼 qbilbo 的回复:

public void Conn() 改成:public ArrayList Conn() 函数最后return Arr;
 

那么form1中如何接收呢
已经很明确告诉你了,ArrayList arrayList =  db.Conn();
这就是在Form1中调用的方式,arrayList里存的就是你想要的值。
你是随便一用,还是要做一些开发?为什么不学一学基础的东西呢?总是“想实现什么功能”的时候就来网上或论坛找代码,你有多少精力和技术分让你挥霍,学习不是一件多麻烦的事,起码比你来等答案要容易。