建立一个名为 modGeneral 的模块并加入下面一行代码:
创新互联公司-专业网站定制、快速模板网站建设、高性价比上犹网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式上犹网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖上犹地区。费用合理售后完善,10多年实体公司更值得信赖。
Friend DataStuff As DataClass
这一行代码为我的新类 DataClass 创建了一个友元变量,使你可以完全访问程序集,对这个简单例子来说,也就是指完整的应用程序。然后我添加了下面的代码到 Form1 的 Load 事件:
DataStuff = New DataClass
Me.txt1stData.DataBindings.Add("Text", DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text", DataStuff, "MoreData")
第一行建立一个 DataClass 新实例。下面两行代码将数据绑定到 textbox 控件。对这个窗体而言,就这么些操作!
现在,你怎样让它们与 Form2 和其它窗体上的数据同步呢?将下面两行加入到 Form 2 的窗体load 事件中去:
Me.txt1stData.DataBindings.Add("Text",DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text",DataStuff, "Moredata")
这个方法容易确保所有窗体上的几乎任何类型的数据处于同步状态。你可以简单地将控件绑定到某个类的相同实例上,这就行了。
1、是的,作用域的区别如下:
Public 公有成员,表示所有模块的所有其它过程都可访问这个成员。
Private
私有成员,表示只在其类的块中,唯有友元(Friend)才可以访问,属私有对象。其他地方均不可以访问。
Protected 半私有成员,表示只在其类的块中,或者是派生类中,友元才能访问。
Friend
友元,设置成友元的情况下下,可以不受public跟private的约束,可以进行私有成员的访问。
所以两个不同的模块中唯有 Public 是可以互相访问的。
2、能触发。
Private 是相对于其他类来讲是 Private 的,对于 C1 本身是可以访问的。既然 class2 是 C2 的实例,并继承了 C1,那么是可以触发 C1 中的 Private 过程的。
Friend是用来在声明中定义访问级别的。
Public:公用,同一项目中任意位置的代码,引用该项目的其他项目,以及由该项目生成的任何程序集。
Protected:保护,同一个类内部或从该类派生的类中访问元素。
Friend:友元,从同一程序集内部访问元素,而不能从程序集外部访问。
Protected Friend:Protected 和 Friend 的联合,派生类或同一程序集内,或两者皆可。
Private:私有,仅可以从同一模块、类或结构内访问元素。
而所谓程序集的概念,可以理解为一个项目就是一个程序集,VS支持一个解决方案有多个项目,也就是一个解决方案多个程序集,比如项目A、项目B,项目A为启动项目。A要访问B首先要引用B,假设B里有个public的类myclass,类里有一个public的方法A和一个friend的方法B,按照前面说的访问级别的设定,myclass类的方法A在项目A中是可见的,而B却是不可访问的(Friend从且仅从同一程序集内部访问)。这就是区别。
P.S MSDN给的程序集的定义繁琐而难于理解,题主可以自行查阅一下。
在类的private:节中声明的成员(无论数据成员或是成员函数)仅仅能被类的成员函数和友元访问。
在类的protected: 节中声明的成员(无论数据成员或是成员函数)仅仅能被类的成员函数,友元以及子类的成员函数和友元访问。
在类的public:节中声明的成员(无论数据成员或是成员函数)能被任何人访问。