操作步骤:

1、新建一个项目CSFramework3.test,在CSFramework3.test项目下新建一个FormMan窗口(此时不需要继承)。

2、按F7打开类,替换一下引用

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using CSFramework3.Interfaces;
using CSFramework.Library;
using CSFramework.Common;

此时下面三个模块会报错,因为框架窗口没有引用这三个模块。如图添加引用

CSFramework3.Interfaces           共用         系统接口模块

CSFramework.Common               共用         公共模块

CSFramework.Library              不共用       基类库模块

3、继承模块主窗体基类,把Form换成frmModuleBase

public partial class FormMan : frmModuleBase

如果出现设计器报错,删除FromMan.Designer中报错的代码,因为继承窗口关系没有自动生成代码。如图

4、打开设计页面,在工具里搜索MenuStrip 添加一个菜单控件,保存。(如果以上操作没成功)

5、直接使用继承窗口创建项目。(删除没有成功的项目)

6、打开设计页面,在工具里搜索MenuStrip 添加一个菜单控件,保存。如图

图中的测试按钮随便复制一个过来。menustrip是添加的菜单。

7、下来照样把上面的引用替换。在初始方法中加入以下红色的代码。

public frmDocumentManagementMan()
{
InitializeComponent();

_ModuleID = CSFramework3.Interfaces.ModuleID.DocumentManagement; //设置模块编号
_ModuleName = ModuleNames.DocumentManagement;//设置模块名称
menuStrip1.Text = ModuleNames.DocumentManagement; //与AssemblyModuleEntry.ModuleName定义相同

this.MainMenuStrip = this.menuStrip1;

this.SetMenuTag();
}

正常情况下SetMenuTag();和DocumentManagement会报错,因为没有实现它的方法。继续加入红色代码,

DocumentManagement报错是没有设置菜单名称,暂时不管。

public override MenuStrip GetModuleMenu()//为窗口提供菜单系统
{
return this.menuStrip1;
}

private void SetMenuTag()
{
menuOperationMain.Tag = new MenuItemTag(MenuType.ItemOwner, (int)CSFramework3.Interfaces.ModuleID.PurchaseModule, AuthorityCategory.NONE);
btnSales.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFramework3.Interfaces.ModuleID.OperationPlan, AuthorityCategory.MASTER_ACTION);
}

可能menuOperationMain和btnSales会报错,改成对应的name,菜单name和按钮name 设计器属性找。

8、在类中找到ModuleID 按F12

设置菜单ID和名称,最后一个不要加逗号。复制tests这个名称,打开类fromman。把报错的DocumentManagement换成tests

9、找到这个类打开,修改里面的引用和代码。

替换引用

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using CSFramework.Library;
using CSFramework3.Interfaces;
using CSFramework.Core;

替换注意红色部分

[assembly: AssemblyModuleEntry(ModuleID.tests, ModuleNames.tests, "CSFramework3.test.FormMan")]//这行需要手动添加
[assembly: AssemblyTitle("CSFramework3.test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("CSFramework3.test")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

10、右键点击项目属性。

注意红色部分。联系QQ78474580

使用C#开发C/S框架高级版添加新项目实例的更多相关文章

  1. PHP框架Yii2.0安装(基础版、高级版)

    最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指 ...

  2. 《实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)》

    <实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)> 基本信息 作者: 徐康明    辛洪郁 出版社:电子工业出版社 ISBN:9787121221378 上架时间:2014 ...

  3. 招聘:web前端开发(中级、高级均可)

    web前端开发(中级.高级均可) 工作地点:广东-深圳 工作年限:2年 学历要求:本科 招聘分类:前端开发工程师 工资范围:面议 招聘人数:3 发布日期:2014/07/29 截止日期:2014/08 ...

  4. 关于web开发前端h5框架的选择

    关于web开发前端h5框架的选择 看了很多移动版框架都是基于app混合式开发的,不是单独h5网站的基于h5开发的web框架从组件丰富度,兼容性,相关教程来说bootstrap还是最好的react和vu ...

  5. 流风ASP.NET框架商业版-工作流1.0简介

    流风ASP.NET框架商业版-工作流1.0简介 工作流简介 在流风ASP.NET框架商业版1.0推出后,就有集成工作流的想法,但是由于工作繁忙和其他事情的耽搁,时隔半年之久工作流1.0的版本才姗姗来迟 ...

  6. 宣布正式发布 Biz Talk Services、Azure Active Directory 和 Traffic Manager, 同时发布 Azure Active Directory 高级版预览

    除经济优势之外,云计算还在可转化为竞争优势的应用程序开发方面提供了更大的灵活性.我们很高兴看到每天创建的新 Windows Azure 订阅超过 1000 个,更令人兴奋的是,有一半客户使用价值更高的 ...

  7. 《Linux设备驱动开发具体解释(第3版)》进展同步更新

    本博实时更新<Linux设备驱动开发具体解释(第3版)>的最新进展. 2015.2.26 差点儿完毕初稿. 本书已经rebase到开发中的Linux 4.0内核,案例多数基于多核CORTE ...

  8. PHP和MySQL Web开发(原书第4版) 高清PDF+源代码

    PHP和MySQL Web开发(原书第4版) 高清PDF+源代码 [日期:2014-08-06] 来源:Linux社区  作者:Linux [字体:大 中 小]     内容简介 <PHP和My ...

  9. Laravel开发:Laravel框架门面Facade源码分析

    前言 这篇文章我们开始讲 laravel 框架中的门面 Facade,什么是门面呢?官方文档: Facades(读音:/fəˈsäd/ )为应用程序的服务容器中可用的类提供了一个「静态」接口.Lara ...

随机推荐

  1. Python之数学(math)和随机数(random)

    math包包含了最基本的数学运算函数,如果想要更加高级的数学功能,可以使用标准库外的numpy和scipy库,他们不但支持数组和矩阵运算, 还有丰富的数学和物理方程可供使用 random包可以用来生成 ...

  2. HashiCorp Vault介绍

    HashiCorp Vault是一款企业级私密信息管理工具.说起Vault,不得不提它的创造者HashiCorp公司.HashiCorp是一家专注于DevOps工具链的公司,其旗下明星级产品包括Vag ...

  3. Struts2如何搭建?

    如何搭建Struts2:   1.导入jar包 commons-fileupload-1.3.jar commons-io-2.0.1.jar commons-lang3-3.1.jar freema ...

  4. JavaScript:事件对象Event和冒泡

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 绑定事件的两种方式 我们在上一篇文章中已经讲过事件的概念.这里讲一下注册 ...

  5. event跨进程通信

    event天生的弱势,只有mutex可以感知丢失,就是将另一个进程关闭了,event无法感知. event1: #include <stdio.h> #include <stdlib ...

  6. 同时装了Python3和Python2,使用pip

    第一种方法: pip安装: py -2 -m pip install -- py -3 -m pip install -- 运行代码: py -2 py.py py -2 py.py 第二种方法: 运 ...

  7. Oracle中 in、exists、not in,not exists的比较

    最基本的区别: in 对主表使用索引 exists 对子表使用索引 not in 不使用索引 not exists 对主子表都使用索引 写法: exist的where条件是: "...... ...

  8. jquery中ajax跨域提交的时候会有2次请求

    我们平时在同域中请求页面什么的时候不会有这种情况,这种情况大多发生在移动端的跨域请求中发生的. 解决方法就是在服务端中加一层过滤HTTP请求的类型,把OPTION等不用的类型过滤掉.就是当请求为非 H ...

  9. isFile() exists() isDirectory()的区别

    isFile()public boolean isFile()测试此抽象路径名表示的文件是否是一个标准文.如果该文件不是一个目录,并且满足其他与系统有关的标准,那么该文件是标准文件.由Java应用程序 ...

  10. javascript 中 dom.getAttribute("value") 与dom.value的差异

    dom 是一个 input type="text" 手动修改 input 的值, 使用 dom.getAttribute("value") 只能得到 html ...