首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WinForm企业应用框架设计【三】框架窗体设计;动态创建菜单;

要不是我的朋友乔乔==乔不死跟我聊到领域驱动设计~ 我也不会发现第一篇中关于“充血实体”的错误说法(至少~我写文章的时候~内心的想法是错的~) 我个人不是很喜欢领域驱动设计~感觉这种思路(我们暂且叫它思路...言归正传 一:框架窗体 先看图片  框架窗体分管布局的只有四个Panel; 上、下、左、右。(搞过EXTJS的人比较喜欢说成东、南、西、北)-_-!...可以拖动改变左右panel的宽度 这里需要注意一点 应该先把左侧panel拖进窗体,设置Dock left, 再拖一个splitter进窗体,他是天然的Dock left, 再拖右侧panel进窗体,设置...Utils.IsInDesignMode()) { InitMenu(); } } IsInDesignMode是为了判断当前的窗体是不是出于设计状态...(设计状态会执行一些代码~如果不进行处理~窗体就无法设计) 代码如下~ /// /// 判断是否为设计状态 /// </summary

88930

窗体UserForm

1、什么是窗体窗体是VBA里做好了的一个与用户交互的东西,在VBA编辑器界面,点击菜单插入-用户窗体,这样就创建了一个窗体界面,在VBA编辑器里的是一个编辑界面: ?...点击运行,就可以启动窗体,这时候显示的就是一个交互界面: ?...2、窗体作用: 个人看法: 窗体主要作用就是提供了一种交互界面,让程序制作者更方便制作易用的程序,让使用者通过直接的交互界面更快的学会使用程序。...这是因为在Windows上使用的软件,基本都会有窗体的交互界面,特别是玩游戏用过外挂的人,可能会认为只有这种交互界面的才能算得上是一种软件。 3、代码编辑: 窗体和类相似,内部代码都属于这个窗体。...运行TestUserFrom,点击窗体: ?

2.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

PAGE:像Visual Studio一样设计Python GUI窗体

虽然使用标准库tkinter开发Python GUI程序很方便,也提供了强大的功能,但是窗体上的一切都需要程序员使用代码来控制,在页面布局上浪费大量时间,确实不是很方便。...可视化开发环境,正如该软件网站所描述,PAGE - Python Automatic GUI Generator,这是个用于快速生成Python GUI程序界面的工具,可以像Visual Studio那样在窗体上拖放组件...然后到下面的网站下载并安装最新的PAGE软件, https://sourceforge.net/projects/page/ 安装过程很简单,然后就是启动这个软件了,看上去很简陋的样子,让我们先创建一个窗体并设置它的标题...然后在左侧工具箱里用鼠标单击Label组件,再在窗体上合适的位置单击鼠标,这样就可以在窗体上创建一个标签组件,用鼠标调整其大小和位置,在右侧设置其属性foreground为红色,并对字体进行简单设置:...继续在左侧工具箱单击Button组件,再在窗体上合适的位置单击鼠标,在窗体上创建一个按钮组件,并设置其text属性为“修改”,设置其command属性为onBtnModifyClick: ?

6K41

Python GUI项目实战(一)登录窗体设计与实现

---- 好啦,从现在开始正式进入项目的开发吧,今天我们要做的内容是登录界面框架GUI的设计与功能实现!...) self["bg"]="royalblue" 在登录窗体中再定义一个登录主窗体跳转方法: def load_main(self): # 关闭当前窗体 self.destroy...)中,用户密码验证成功后,调用跳转主窗体的方法即可;至此,我们登录窗体就已经搭建完成了!...最后 本节我们先整体介绍了一下该项目的主要功能,然后就开始了项目的第一步:登录窗体的实现,实现了用户名和密码的校验功能,完成了登录窗体我们点击登录按钮希望能加载主窗体界面,这该如何实现呢?...下一节,我们将介绍主窗体的界面的搭建和功能的实现。 ·END·

13.2K185

使用线程新建WPF窗体(公用进度条窗体)

使用线程新建窗体 项目中需要一个公用的进度条窗体.大家知道在wpf中,有两个线程,一个是UI线程,另一个是监听线程(一直监听用户的输入).如果我们后台有阻塞UI线程的计算存在,那么界面上的比如进度条什么动态的...所以我的想法就是新起一个线程来负责进度条窗体的显示与关闭,具体实现代码如下: private static Thread th; /// ///...在使用过程中发现一个很严重的问题,出现一个进度条窗体,系统内存就会增大一点,到最后要么卡死,要么自动退出.      ...在设计多线程程序时,可设置一个用于接收外部取消消息的属性,然后在线程函数中分阶段地检测这一属性,每个阶段的检查点由软件开发者确定,并且决定线程如何优雅退出。...所以对上述代码进行了改进 首先设置一个公共变量:  public static bool IsClsoeProgeressBar = true; 然后在进度条窗体中实时读这个数据 /// <summary

2.1K100

WinForm企业应用框架设计【四】动态创建业务窗体

所有的业务窗体都继承自这个基类BaseForm 这个窗体基类有三个公开的属性 /// /// 菜单数据 /// </summary...所以我们要设置窗体的TopLevel属性 /// /// tab按钮选中事件; /// ///...,如果有是显示状态的,那么就把他隐藏掉,因为当前系统只能有一个业务窗体是出于显示状态的 接着选中TAB按钮, FormHistory的Remove和Insert主要是为了让系统记住哪些窗体是最近显示过的...(如果有的话) 重写设置tab按钮的位置(主要是被关闭的tab按钮的右边的tab按钮) 删除tab按钮 三:动态创建业务窗体 我们在上一节中只讲了子菜单的滑入和滑出事件,而没有讲单击事件 单击事件就是创建业务窗体的事件了...if (string.IsNullOrEmpty(m.Url)) { Utils.Alert("没有与此菜单相关的业务窗体

66630

Python GUI项目实战(四)实现学生明细窗体GUI设计

前言 在上一节实现主窗体信息查询功能中我们实现了在主窗体中通过单条件查询或者组合查询进行学生信息的筛选功能,系统能够在所有的数据中精确地找到某个具体的符合条件的学生信息。...在tkinter里面有一个类Tk,其功能是产生一个主窗体,我们前面每次创建窗体时都用到了它。但是在tkinter里有一个规定,应用程序同时只能运行一个主窗体。...而这里我们的主窗体一直在运行,是没有办法再加载一个主窗体(明细信息)的。如果想同时加载两个窗体,第二个窗体必须要以子窗体的形式打开,这里我们就可以使用Toplevel来创建子窗体。...所以,出现这个问题的根源所在就是:使用Tk这个类实例化一个窗体,这个窗体是一个主窗体。已经实例化了一个主窗体,再实例化一个是不可以的。所以第二个窗体必须用Toplevel实例化。...点击添加学生按钮,明细窗体标题显示“添加学生明细”;点击修改学生按钮,明细窗体标题显示“修改学生明细”;双击表格学生学生信息某一行,明细窗体标题显示“查看学生明细”。

2.6K20

C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)

本文转载:http://www.csframework.com/archive/2/arc-2-20110805-1771.htm 文章侧重点主要是讨论“窗体”与“窗体”之间方法的调用,以及“MDI父窗体...C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用) 看似一个简单的功能需求,其实很多初学者处理不好的,很多朋友会这么写: C# Code: //父窗体是是frmParent,子窗体是frmChildA...//在父窗体中打开子窗体 frmChildA child = new frmChildA(); child.MdiParent = this; child.Show(); //子窗体调父窗体方法...如果父窗体与子窗体在同一个模块内看似没有错,因为这种反向引用在同一个模块内是可行的,但程序不能这么写,你把它写死了!固化了!...假设我们的项目不断在扩展,需要将父窗体与子窗体分开在不同的模块,这段代码就完了!因为父窗体模块必须引用子窗体模块,而子窗体需要用到frmParent的类,又要引用父窗体的模块!

8.1K20

winform 窗体实现增删改查(CRUD)窗体基类模式

参考博客下方:http://www.cnblogs.com/wuhuacong/archive/2010/05/31/1748579.html 对于一般常用到的编辑数据、新增数据窗体,分开了两个不同的窗体进行处理...,而且由于BaseForm窗体没有对通用的函数进行进一步的抽象,因此,编辑及新增窗体多了很多重复累赘的代码,其实可以把新增、编辑合并一个窗体,然后根据新增、编辑两种不同的条件进行处理即可。...由于BaseForm一般需要在大多数的窗体中,而新增编辑数据窗体一般较为特殊一点,可以再增加一个基类BaseEditForm,用来做新增编辑窗体的基类,该基类继承自BaseForm类,工程代码如下所示。...编辑以及新增我们整合在一个窗体中,先看看该基类的设计视图,我们在其中添加了3个按钮(常用的添加、保存、关闭按钮)。 ?...窗体的代码我大类采用了可重载的虚函数,留给子类窗体进行实现不同的处理操作,如窗体加载显示操作、显示数据到控件的操作、保存、新增等函数都是需要实现的,而调用逻辑以及一些通用的处理,则在基类BaseEditForm

2.4K20

实现iframe父窗体与子窗体的通信

本文主要会介绍如何基于MessengerJS,实现iframe父窗体与子窗体间的通信,传递数据信息。同时本文会提供一个可运行的实例代码,实现在父窗体中,获取到来自子窗体的数据的效果。...(2)当子窗体触发了一个事件后,要给父窗体传一个跳转地址的url。父窗体监听到这个事件后,根据接收到的url,来更新当前父窗体的url,实现页面的跳转。...(2) 父窗体和子窗体各自的文档(document)中,都需要自己的Messenger与其他文档通信,父窗体和子窗体的window对象都对应着有且仅有一个Messenger对象,该Messenger对象会负责当前...这里分别是父窗体和子窗体的代码实现,可直接在浏览器中打开查看效果,其中messenger.js可以在这里下载,放到项目目录下。 父窗体: <!...同时提供了一个完整的实例,可以实现子窗体向父窗体传递消息,父窗体通过监听消息事件,来获取子窗体消息的目的。如有问题,欢迎指正。

9.7K771

窗体UserForm——选项按钮

还是以前面激活工作表的功能为例: 在不知道有多少个工作表的时候,如何显示一个窗体界面,出现每一个工作表名称的选项,选中后按按钮激活工作表。...由于不确定工作表的数量,所以不能通过拖拽的方式添加指定数量的控件,这时候就需要用到UserForm的Initialize事件,在UserForm初始化的时候来添加控件,首先仍然拖拽一个命令按钮在窗体的最上面...控件的Top 、Height、Left、Caption等属性,都可以通过窗体设计界面,先拖拽一个相应的控件,然后在属性窗口查看控件所具有的属性。...关键字Me,在这里就是指添加的窗体UserForm1,这个关键字还可以在类模块里使用,所代表的也就是那个类。...,窗体界面显示的时候所有工作表都可以在上面选择了,然后点激活按钮就可以激活相应的工作表: ? 这样用代码的方式添加控件也让使用者更方便的控制控件的位置,修改起来也更灵活。

1.7K10
领券