中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 其他
谈基于.Net平台开发中的模式窗体(4)
作者:佚名 时间:2007-09-04 15:21 出处:csdn 责编:月夜寒箫
              摘要:谈基于.Net平台开发中的模式窗体(4)
(3)使用公共属性

使用公共属性也是一种比较常用的方式,通过窗体设计器添加的控件默认访问修饰符为private级别,可以设置成public或Internal(在程序集内部可见)来对外公开。比如对窗体中的Button进行公开,那就可以访问Button的相关属性,同时也可以注册事件或撤销事件注册。如,

            

OptionForm form = new OptionForm();

form.buttonOK.Click += new EventHandler(buttonOK_Click);

form.ShowDialog();

对于只允许读取访问或修改访问的控件或变量可以通过属性来控制。对(1)方式进行修改,去除重载构造函数,增加属性也可以实现同样的效果。

            

public object MyParams

{

  get { return this.myParams;  }

  set { this.myParams = value;  }

}

(4)使用公共方法

使用公共方法类似于属性,对上面的同等实现如下,

            

//获取参数

public object GetParams()

{

  return this.myParams;

}

//设置参数

public void SetParams(object myParams )

{

  this.myParams = myParams;

}

(5)使用静态类该方式可以简单的理解为静态变量全局共享

通过下面代码能够比较清楚的理解,先来定义静态类,

            

public static class ParameterSettings

{

  //公共静态变量

  public static string Username = "Zhengzuo";

  //私有静态变量

  private static string userRole = "Administrators";

  //私有静态变量

  private static string password = "http://blog.csdn.net/zhzuo";

  //内部属性

  internal static string UserRole

  {

      get { return userRole; }

  }

  //公共属性

  public static string Password

  {

      get { return password; }

      private set { password = value; }

  }

}

在需要访问的地方通过以下方式进行,

            

string username = ParameterSettings.Username;

string password = ParameterSettings.Password;

string userRole = ParameterSettings.UserRole;

ParameterSettings.Username = "郑佐";//修改成新用户名

(6)窗体实现Singleton模式

Singleton模式是我们开发过程中最常用的模式之一。在技术社区经常看到有人谈及对主窗体实现Singleton,但个人认为这不是一种妥当的做法,因为没有这个必要。这里通过另一个自定义类来进行演示。假设UserLoginInfo类用来保存登录系统后的用户凭据。

public class UserLoginInfo {

//实现Singleton模式,线程安全。

private readonly static UserLoginInfo currentUserInfo =

new UserLoginInfo();

//提供全局访问点

public static UserLoginInfo CurrentUserInfo

{

get { return currentUserInfo; }

}

//阻止显式实例化,但不能阻止反射方式调用。

private UserLoginInfo()

{     }

//公共变量

public string Username;

//私有变量

private static string userRole;

//私有变量

private static string password;

//内部属性

internal string UserRole

{

get { return userRole; }

set { userRole = value; }

}

//公共属性

public string Password

{

get { return password; }

internal set { password = value; }

}

}

在其他代码中进行访问,

            

UserLoginInfo.CurrentUserInfo.Username ="郑佐";

UserLoginInfo.CurrentUserInfo.UserRole = "dotnetlover";

UserLoginInfo.CurrentUserInfo.Password = "http://blog.csdn.net/zhzuo";

对于Singleton模式的实现方式有很多,编写时需要考虑是否需要保证实例访问的线程安全问题,以免引发不可预料的情况,为了提高性能可以考虑惰性实例化。关于Singleton模式的更多信息可以参考另一篇文章。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有