紧急求救-C#开发一个系统程式,其内包含多个小程式的开发思路

軍哥 2012-02-22 11:04:47
各位大牛好,

本人是想使用VS2010 中C#语言开发一个winform程式来,内包括几个小程序。目前是想采用树形结构,即左边目录右边为子程序操作界面。
现发现此主程式会给一个公司使用,不同的子程式分不同的部门使用,在后期部份子程式升级方面会存在一些问题,因为某些部门使用不到这些功能就没必要将主程序升级了。只需对需用此子程序的部门作升级。

现子程序又是嵌套在主程式中的。不知可解?

因处于设计阶段,大家可出各种的主意,包括不采用EXE文件做法,换DLL的。
我目前是想走DLL方向 可不知如何实施,会需要平台 需要子母相连。

我想找的是一个解决方案。 一个可以连通的路。

我已将自己的分全部拿出来了,,江湖救急。。。
...全文
226 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
軍哥 2012-02-24
  • 打赏
  • 举报
回复
目前看来muyi66,FT菜菜的方法是可行的,具体的我再详细问了,现结贴。
感谢大家参于
軍哥 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bdmh 的回复:]
根据需要动态加载模块,每个模块可以做成dll
[/Quote]

这个很对,但是这个动态加载模块采用何种方案实现???
有免费平台?工具?
bdmh 2012-02-22
  • 打赏
  • 举报
回复
根据需要动态加载模块,每个模块可以做成dll
軍哥 2012-02-22
  • 打赏
  • 举报
回复
是分权限,目前 是一个如何后期升级的问题,用EXE文件使用版本管控 每次单子程式更新就需要更新主程式,可这样又存在浪费。
满衣兄 2012-02-22
  • 打赏
  • 举报
回复
好像应该通过权限来操作吧,不同部门或者账号有不同权限
muyi66 2012-02-22
  • 打赏
  • 举报
回复
要让子窗体显示在主窗体上指定位置,只要在子窗体对象创建后执行Show方法之前去设定好子窗体的各个位置、尺寸属性就好了。设定好之后再执行Show,你看到的就是已经按要求放好的子窗体。
muyi66 2012-02-22
  • 打赏
  • 举报
回复
你把子窗体编译成dll就是了,调用方式和原来也都一样。
軍哥 2012-02-22
  • 打赏
  • 举报
回复
我想实现 应是下面这个:

DLL方式封装MDI子窗体是一种常用的软件开发技术,它的优点:

开发人员可以负责某一个模块的编写包括(界面+逻辑),可以互不干扰,模块开发完成后,主程序统一调用。
易于程序升级,当程序升级时,不用编译主exe文件,更新某个DLL就可以升级。
可以根据客户不同的需求、价钱给他们不同的模块。(奸商都愿意用这招)

所以请问具体
的如何
muyi66 2012-02-22
  • 打赏
  • 举报
回复
用不着那些东西,就是直接用VS完成了。

如果是弹出新窗体,按15楼做就行。
軍哥 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 nonocast 的回复:]

考虑MEF
[/Quote]
??
MEF 如何使用???
nonocast 2012-02-22
  • 打赏
  • 举报
回复
考虑MEF
muyi66 2012-02-22
  • 打赏
  • 举报
回复
记错了,并不需要先LOAD


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private Form2 fm2;
private void Form1_Click(object sender, EventArgs e)
{
fm2=new Form2();
fm2.Show();
}
}
軍哥 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 c325061100 的回复:]

这个很简单. 之前有做过类似的. 是通过 根据登录用户的角色 加载 .DLL来控制的。

.DLL加载是通过扫描当前程序运行目录下的 *.dll文件, 然后判断 .dll文件是否包含自定义属性, (自定义一属性放在项目 - Properties - AssemblyInfo.cs 文件里面代码行).

如果包含自定义属性,比较当前登录角色是否需要加载该dll,如果需要则加载.
……
[/Quote]

菜菜 这个主要是我没做过啊,,你可好心将主体框架发于学习下如何。
或者一个小示例。。目前是无头绪。。。。 网上的示例也可以啊。。。。
先谢过啊
FtLover 2012-02-22
  • 打赏
  • 举报
回复
这个很简单. 之前有做过类似的. 是通过 根据登录用户的角色 加载 .DLL来控制的。

.DLL加载是通过扫描当前程序运行目录下的 *.dll文件, 然后判断 .dll文件是否包含自定义属性, (自定义一属性放在项目 - Properties - AssemblyInfo.cs 文件里面代码行).

如果包含自定义属性,比较当前登录角色是否需要加载该dll,如果需要则加载.


这个主要用到反射.
軍哥 2012-02-22
  • 打赏
  • 举报
回复
对此类调用之前没做过,问下 如何Load

比如 有二个子程式 ATS2012 ATS2013
如何在点左边目录时装载到主程式的TREEWIEW右半边
軍哥 2012-02-22
  • 打赏
  • 举报
回复
对此类调用之前没做过,问下 如何Load

比如 有二个子程式 ATS2012 ATS2013
如何在点左边目录时装载到主程式的TREEWIEW右半边
muyi66 2012-02-22
  • 打赏
  • 举报
回复
应该先运行Load方法
軍哥 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 muyi66 的回复:]

引用 7 楼 jack_33 的回复:

引用 6 楼 muyi66 的回复:

就用VS自己实现。定义一个子模块的界面为一个dll项目就行了。


然后主界面如何与此DLL相连???
主文件里加上引用,然后用子模块的类建立对象,运行它的Form_Load和Show方法。
[/Quote]


Muyi66
问你 是如下面的做法不?
如何做到将子程式直接打开在主程式的树形工具的右侧固定框内?

private void button1_Click(object sender, EventArgs e)
{
ClassLibrary1.Form1 f = new ClassLibrary1.Form1();
f.Show();

}
muyi66 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jack_33 的回复:]

引用 6 楼 muyi66 的回复:

就用VS自己实现。定义一个子模块的界面为一个dll项目就行了。


然后主界面如何与此DLL相连???
[/Quote]主文件里加上引用,然后用子模块的类建立对象,运行它的Form_Load和Show方法。
軍哥 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 muyi66 的回复:]

就用VS自己实现。定义一个子模块的界面为一个dll项目就行了。
[/Quote]

然后主界面如何与此DLL相连???
加载更多回复(1)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧