在C#中使用.NET SDK创建控制

在C#中使用.NET SDK创建控制
作者: Norm Almond


  • 下载示例工程 - 8 Kb

    介绍

    在这篇教程中,我将使用.NET架构创建一个简单的时钟控制示例,这个控制是一个显示当前时间的时钟,
    我将指导读者实现秒针并显示钟点数。
    文章加亮处是创建这个控制的关键点,读者可以参考其中的代码。创建一个控制的最快的方法是从这里拷
    贝一个控制示例代码:

    ../Program Files/NGWSSDK/Samples/QuickStart/winforms/samples/Cs/WritingControls/helloworldcontrol

    将目录拷贝到 MyControl目录

    ../Program Files/NGWSSDK/Samples/QuickStart/winforms/samples/Cs/WritingControls/MyControl

    将目录下的Hellowordlcontrol文件重命名为myControl.

    • Helloworldcontrol.cs -> mycontrol.cs
    • Helloworldcontrol.src -> mycontrol.src

    将下列文件中的helloworldcontrol改为myControl:

    • Hostapp.cs
    • Makefile

    打开控制台窗口输入 NMAKE ALL. 将建立下列两个文件:

    • MyControl.exe – The application that hosts the control
    • MyControl.DLL – The actual control.

    现在基本的框架代码已经建立好了,我们可以通过运行mycontrol.exe来测试。

    现在我们可以开始编写我们的控制.

    1. 我们需要添加一些即将使用的 namespaces, namespace包含了我们在控制中所涉及到的类 :

      using System.ComponentModel;// Needed for control support
      using System.Timers; // Needed to support timer
      using System.Runtime.InteropServices;// Needed for StructLayout attribute 
      

    2. 下一步是包含一些允许调用WINDOWS操作系统功能的C#扩展特性,我无法找到一个类似
      获得系统时间的函数,所以我作了如下定义:

      // Definition of WINAPI SYSTEMTIME structure 
      [StructLayout(LayoutKind.Sequential)]
      public class SystemTime {
       public ushort wYear;
       public ushort wMonth;
       public ushort wDayOfWeek;
       public ushort wDay;
       public ushort wHour;
       public ushort wMinute;
       public ushort wSecond;
       public ushort wMilliseconds;
      }
      
      // Definition of WINAPI GetLocalTime function[DllImport("Kernel32.dll")]
      public static extern void GetLocalTime(SystemTime st);
      
    3. 现在我们申明一些在对象运行期间将被使用的成员变量。
      private Colorm_colorHands;private Colorm_colorFace;
      private boolm_bActivateClock;
      private System.Timers.Timer m_timer;
      

      这里要注意的是,要在声明任何变量之前引入关键字,而不是像C++那样可以跟变量一起定义。

    4. 定义构造函数.

      跟Java类似,方法可以在内部编写,将来虽然需要经常修改,但修改变得简单易行了。

      public MyControl(){
       m_colorHands = Color.White;
       m_colorFace = Color.Blue;
       SetStyle(ControlStyles.Opaque, false);
       SetStyle(ControlStyles.ResizeRedraw, true);
      }
    5. 下一步是定义一些属性,这里包含了一个新的功能:属性标记,他将为其它子系统提供运行时库信息。

      [
      Category("Clock"),
      Description("Hands color for Clock"),
      DefaultValue(0xFFFFFF),
      ]
      public Color HandsColor {
       get {
        return m_colorHands;
       }
      
       set {
        m_colorHands = value;
        Invalidate();
        Update(); 
       }
      }

      括弧[ ]中的代码定义了特定的属性, get 和 set 函数对于对象外面也是可用的,
      要想修改时钟指针的颜色,你可以这样做:

      someobj.HandColor = Color.Red;

      此句隐含调用了set函数。

    6. 重载基类函数

      protected override void OnPaint(PaintEventArgs pe) {
       // Let base class draw its stuff first
       base.OnPaint(pe);
      
       // Draw code here...
      }

      请注意用来重载基类函数的关键字 override

      这段代码调用了基类函数 OnPaint (base.OnPaint(pe); )

    在代码中其它有价值的地方是:对象建立在堆上,且不需要象C++中进行delete操作. NWGS 中的垃圾
    收集功能将会对用NEW分配的对象进行回收。

    例如:

    {
     // ... Some code
     SolidBrush brush = new SolidBrush(Color.White)
    
     // Scope ends... no delete operator needed for brush
    }
    C#的另一个特性时在调用函数时更改变量的取值。

    请看如下代码:

    CalculatePoint(ptStart, out ptEnd,(st.wHour*5)+(st.wMinute/12), false, rc);

    请注意 out 参数,这样定义当进入函数后变量将被更改。

    我们可以这样定义:

    protected void CalculatePoint(Point pStart, out Point pEnd, 
                                  int nPos, bool bFlag, Rectangle rc)

    Mycontrol.exe 已经建好了,另一种测试控制的方法是运行 WinDes.exe, 然后建立一个新的 C# Win32Form,
    选择Library 菜单下Edit/Add 并且选择 mycontrol.dll

     

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 盛派.NET SDK是一个用于开发基于.NET框架的软件开发工具包。它提供了一套丰富的函数和类库,帮助开发人员更高效地使用.NET技术进行软件开发。 盛派.NET SDK具有以下特点和功能。首先,它支持多种编程语言,包括C#、VB.NET等,使开发人员可以根据自己的喜好和背景选择合适的语言进行开发。其次,它提供了一些常用的功能模块,如数据访问、用户界面设计、身份验证和授权等,可以大大简化开发过程,提高开发效率。 盛派.NET SDK还提供了一些高级功能,如与数据库的交互、多线程编程、网络通信等。这些功能能够满足一些特定需求,使开发人员能够更加灵活地开发出符合自己需求的软件。 另外,盛派.NET SDK还提供了丰富的文档和示例代码,帮助开发人员快速上手和使用SDK。开发人员可以通过查阅文档和参考示例代码,了解和学习SDK的各种功能和用法。 总的来说,盛派.NET SDK是一个功能强大、易用且灵活的开发工具包,可以帮助开发人员更高效地使用.NET技术进行软件开发。无论是初学者还是有经验的开发人员,都可以从盛派.NET SDK获得很多帮助和支持。 ### 回答2: 盛派.NET SDK是一个用于开发基于.NET技术的应用程序的软件开发工具包。它提供了许多方便的功能和组件,使开发者可以更轻松地构建应用程序,并且能够与不同的互联网服务进行交互。 首先,盛派.NET SDK包含了许多常用的类和方法,使得开发者可以轻松地访问和操作数据库、文件系统、网络等资源。这些功能大大简化了开发过程,提高了开发效率。 其次,盛派.NET SDK支持与各种互联网服务进行集成和交互。例如,开发者可以使用SDK与各大社交媒体平台进行连接,实现用户登录、分享内容等功能。同时,它还支持与第三方支付平台对接,实现在线支付的功能。 此外,盛派.NET SDK还提供了一套可视化的开发工具,使开发者可以更直观地设计和调试应用程序的界面。这些工具提供了丰富的控件和布局选项,让开发者能够快速创建用户友好的界面。 最后,盛派.NET SDK还包含了一系列的文档和示例代码,帮助开发者了解和使用SDK的各种功能。这些文档详细介绍了各个类和方法的用法,示例代码则展示了如何使用SDK实现各种功能。开发者可以通过参考这些资料,快速上手并解决遇到的问题。 总而言之,盛派.NET SDK是一个功能强大、易用性高的软件开发工具包,可以帮助开发者快速构建.NET应用程序,并与各种互联网服务进行交互。无论是初学者还是有经验的开发者,都能够从获得便利和效率的提升。 ### 回答3: 盛派 .NET SDK 是一个为开发者提供的软件开发工具包,用于帮助开发者在 .NET 平台上快速、高效地开发应用程序。通过使用盛派 .NET SDK,开发者可以轻松地在自己的应用程序集成盛派的功能和服务。这个 SDK 提供了一系列的 API 接口,开发者可以使用这些接口来调用盛派的各种功能,如用户身份验证、数据上传、推送通知等。 盛派 .NET SDK 的特点之一是其易用性和灵活性。开发者只需简单地引用 SDK 的库文件,并在他们的代码使用相应的 API 接口,就可以快速集成盛派的功能。开发者可以根据自己的需求选择合适的功能和服务,以及相应的 API 接口。盛派 .NET SDK 还提供了丰富的文档和示例代码,来帮助开发者更好地理解和使用 SDK。 此外,盛派 .NET SDK 还具有高性能和稳定性。盛派团队经过不断的优化和测试,确保 SDK 在不同的环境和场景下都能提供稳定可靠的性能。开发者可以放心地将盛派的功能集成到自己的应用程序,确保用户能够得到良好的体验。同时,盛派 .NET SDK 也支持跨平台开发,开发者可以轻松地在不同的 Windows 系统上使用相同的 SDK 进行开发。 总之,盛派 .NET SDK 是一个功能丰富、易用、高性能和稳定的软件开发工具包。它可以帮助开发者在 .NET 平台上快速开发应用程序,集成盛派的各种功能和服务,为用户提供更好的应用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈俊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值