找回密码
 立即注册

QQ登录

只需一步,快速开始

yin_tb

高级会员

53

主题

200

帖子

1059

积分

高级会员

积分
1059

微信认证勋章

yin_tb
高级会员   /  发表于:2017-5-24 19:32  /   查看:6802  /  回复:13
有附件,运行程序,在左侧功能区,找到供应链里,双击单据中的采购入库单。
问题都在代码中注释了,代码很少,只是试验 了一点小功能。
主题思想是,在usercontrol中做了一个采购入库单,在功有树中双击功能时,动态新建了dockingtab的tabpage,然后把usercontrol放到tabpage里。
想的是,当用户在采购入库单中,供应商或仓库或备注,或者网格,任何项目有数据变化时,关闭tabpage里,应该有提示,
所以,问题基本都在tabpage的closing事件中说明了。
不知道我的思路对不对,看我的问题,或者你们有什么思路,请看附件。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

13 个回复

倒序浏览
JeffryLI
葡萄城公司职员   /  发表于:2017-5-25 09:25:13
沙发
您好,demo我们已收到,我们会尽快验证答复您。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-5-25 10:08:18
板凳

您好:
'问题:怎么能调用uc_insheet实例的save过程呢? 答:uc_insheet类中save_sheet调用需要先实例化uc_insheet,这样就可以调用了;
'问题:能不用全局的int_insheet变量,用uc_insheet生成的实例中的int_statu吗?答:这个问题其实和第一问一样,在你调用了save_sheet方法后,可以把状态值赋给int_statu,然后带回来,给生成的实例;
'问题:此处还得验证想关闭的page里加载的哪个usercontrol,怎么验证呢?答:这块在主窗体中做一个变量来存储正在Acive的page(因为你加载的窗体就是usercontrol),在我给您发的demo中就有怎么获取加载的usercontrol,唯一不同的是我当前只加载一个usercontrol,所以我让你存储目前正Active的的窗体来解决这点不同。尽量不要用全局变量,不安全,也不专业。

请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
yin_tb
高级会员   /  发表于:2017-5-25 11:38:32
地板
给我写个简单的demo吧,看不太懂C#,你用C#写也行,按我那个demo,简单的实现我的思路,麻烦了,谢谢。
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-5-25 14:18:47
5#
您好,在发给您的Demo中,比如打印预览,打印,导出都是调用的UserControl里面的方法,而且都是对应的UserControl的方法。

变量也是同样的调用方法。您在看看,不懂的话及时问我。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
yin_tb
高级会员   /  发表于:2017-5-25 14:38:26
6#
不好意思,我最专业的是写数据库逻辑,所以这方面不是太专业。
我初始化实例是用的  Dim s_name As String = "docktab." & e.Node.Name
            nsheet = Activator.CreateInstance(Type.GetType(s_name))
来初始化的。
我能看懂你上面截图给我的意思。但VB.NET和C#的写法太不一样,你那个DEMO功能代码也多,里面的很多地方确实看不太懂。
你会用VB.NET吗,就按我那个DEMO,能用VB最好,如果不会VB你给用C#写也行,逻辑简单了,相信能看懂。谢谢
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-5-25 16:54:30
7#
您好:我大概按照您原来的demo改了一下,因为我也不是很熟悉vb,里面也有相应的注释,大概完成了您的想法,如果以后要常用到vb开发,还是建议您在这方面需要多了解,和我一样也要学习哈

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
yin_tb
高级会员   /  发表于:2017-5-25 17:05:29
8#
本帖最后由 yin_tb 于 2017-5-25 17:07 编辑

谢谢,抽空得学下C#了。我下载下来看看试试。关键是要是有VB示例就好了。软件自带的control explore未例,里面有C#和VB.NET的代码,不管truedbgrid还是flexgrid的,包括char等,一看就明白。你发给我的demo.大约能看懂,但变成VB,就不会写了。两种语言有些地方差异太大。要是写基于dataset我就轻松多了。做的ERP产品,界面其实我要求不多,主要是业务逻辑和数据处理及算法。

下载提示有病毒 ,你电脑不会有病毒吧,
回复 使用道具 举报
yin_tb
高级会员   /  发表于:2017-5-25 17:17:52
9#
本帖最后由 yin_tb 于 2017-5-25 17:43 编辑

你好,首先对你的帮助感谢,但不好意思,你给我改的不对。
你改后的代码我知道,我也知道这样来初始化实例,但我不用这种方法是有原因的:
//////如果我的程序有1000个单据界面或报表界面,你想会怎样(那我在TreeView1_NodeMouseDoubleClick事件中得写多少行代码?)。所以,我才会用以下代码来初始化实例
Dim s_name As String = "docktab." & e.Node.Name
Dim nsheet as usercontrol = Activator.CreateInstance(Type.GetType(s_name))
这样,不论我有多少界面,系统都知道根据我点击的treeview的node的名字来加载创建实例,因为我的treeview中的node节点的名字,我会让它和我的usercontrol同名。而且,treeview中的功能列表,是在数据库中根据当前操作员的权限,动态加载的,比如我这个DEMO吧,那个入库单的usercontrol的名字是uc_insheet.我的功能区treeview中的采购入库单这个node的name也是uc_insheet.
我以前的ERP产品是用的国外的WeifenLuo.WinFormsUI.Docking.dll这个实现的这个,很简单,窗体直接继承自dockcontent,可以说dockcontent实现了窗体的所有事件和方法,并且带DOCK功能,用咱们的产品,是想优化一下,主题美观,并且,一些grid和图表更强大。
////////////
对你发给我的说明:
1、虽然你在开始声明了_usercontrol,然后在TreeView1_NodeMouseDoubleClick中声明了uc_insheet的实例:
Dim nsheet As uc_insheet = New uc_insheet
    '保存新创建的usercontrol
    _userControl = nsheet
2、你在C1DockingTab2_TabPageClosing事件中,也声明了实例,并且执行了save_方法:
Dim nsheet As uc_insheet = New uc_insheet
  nsheet.save_sheet()
3、看到没,你在上面两个事件中声明了nsheet,虽然同名,但是dim的局部,不是一个实例,虽然你用_usercontrol保存了,但在C1DockingTab2_TabPageClosing事件中,你也是无法调用_usercontrol的方法的。
4、难道我只能用我原来的weifenluo的dockingpanel,或者在程序中用全局变量了吗?
5、你那边支持人员有会VB.NET的吗,我想应该有。能让他看看我的DEMO吗改下吗?要不,你用你专业的C#给我重写个吧,就按我的界面,也就用你几分种,
但不能像上面一样,两个实例不是一个哦,那样就算调用save_sheet过程,他读取的int_statu也是不对的状态。
你说我说的对吗?谢谢



回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-5-25 17:35:38
10#
应该不会有病毒吧,你说的不对是业务逻辑不对,还是编译出现错误?
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部