窗体

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

旧时模样 提交于 2020-01-24 23:59:26
本文转载: http://www.csframework.com/archive/2/arc-2-20110805-1771.htm 文章侧重点主要是讨论“窗体”与“窗体”之间方法的调用,以及“MDI父窗体”与“Chilid子窗体”之间如何相互的调用方法。 C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用) 看似一个简单的功能需求,其实很多初学者处理不好的,很多朋友会这么写: C# Code: //父窗体是是frmParent,子窗体是frmChildA //在父窗体中打开子窗体 frmChildA child = new frmChildA(); child.MdiParent = this ; child.Show(); //子窗体调父窗体方法: //错误的调用!!!!!!!! (this.MdiParent as frmParent).ParentFoo(); //来源:C/S框架网(www.csframework.com) QQ:1980854898 知道错在那里吗?错在强依赖!如果父窗体与子窗体在同一个模块内看似没有错,因为这种反向引用在同一个模块内是可行的,但程序不能这么写,你把它写死了!固化了!假设我们的项目不断在扩展,需要将父窗体与子窗体分开在不同的模块,这段代码就完了!因为父窗体模块必须引用子窗体模块,而子窗体需要用到frmParent的类

C# 关闭子窗体释放子窗体对象问题

瘦欲@ 提交于 2020-01-24 23:45:42
1 在主窗口中实例化子窗口 Form2 f2 = new Form2(); 2 通过按钮来显示子窗口 f2.Show(); 3 关闭子窗口而不释放子窗口对象的方法 protected override void Dispose(bool disposing) { Hide(); //if (disposing && (components != null)) //{ // components.Dispose(); //} //base.Dispose(disposing); }(注意:在子窗口Designer文件中修改) 4 在父窗口关闭时销毁子窗口对象 子窗口类中添加的关闭函数如下: public void Close() { this.Dispose(); }父窗口关闭是销毁子窗口对象,因此,在父窗口的关闭动作FormClosed中添加调用子窗口f2的销毁函数。 private void Form1_FormClosed(object sender, FormClosedEventArgs e) { f2.Close(); } =================================================================================== 另外还有一种方式: 子窗体定义一个委托,父窗体实例化子窗体时注册子窗体的委托事件

WPF 子窗体关闭,刷新父窗体

拟墨画扇 提交于 2020-01-24 23:43:51
父窗体代码 private void DGUserEdit() { if(DGUser.SelectedItem!=null) { DataRow dr = (DGUser.SelectedItem as DataRowView).Row; Page.UserEdit UE = new UserEdit(UserGrade, dr["UserName"].ToString());//声明子窗体 UE.Closed += new EventHandler(UE_Closed);//注册关闭事件 UE.ShowDialog(); } } //在子窗体的关闭里写要刷新的内容,我这是重写绑定 private void UE_Closed(object sender,EventArgs e) { Band(); } 来源: https://www.cnblogs.com/ZXdeveloper/p/3904153.html

WPF 子窗体关闭时显示父窗体

。_饼干妹妹 提交于 2020-01-24 23:43:07
这个问题纠结了两天,今天在一个朋友的帮助下,解决了,其实很简单,但是可能作为新手,接触WPF时间还是短,因此作为一个问题困扰了我。 父窗体部分代码 private void EditInformation_Click(object sender, RoutedEventArgs e) { this.Visibility = Visibility.Hidden;//父窗体隐藏 Page.ALLEdit AE = new Page.ALLEdit(); AE.Owner = this;//指定子窗体的父窗体是自己 AE.ShowDialog(); //子窗体显示 } 父窗体隐藏,子窗体显示 子窗体部分代码 protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { this.Owner.Visibility = Visibility.Visible;//显示父窗体 base.OnClosing(e); } 重写子窗体的closing事件 重点就是在于父窗体里的AE.Owner = this; 这句话指定了父窗体是谁,如果没有这句话,在运行子窗体关闭时,会弹出“未将对象引用到实例”。 记住,千万不要什么一个new父窗体,这样是不可以的。 来源: https://www.cnblogs.com

窗体彻底关闭事件FormClosed

吃可爱长大的小学妹 提交于 2020-01-24 23:42:01
//Application.Exit()是退出整个应用程序 Application.ExitThread();//强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题 System.Diagnostics.Process.GetCurrentProcess().Kill(); //如果你是需要关闭进程的代码,则如下: //先确定你的进程 Process[] plist = Process.GetProcessesByName("服务"); Process p = plist[0]; // 结束进程的方式: p.Kill(); // 就可以强制关掉进程。 System.Environment.Exit(0); //这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净 this.Close();// This.Close()是关闭当前的窗体 this.Dispose();//Dispose方法只能释放当前窗体资源,不能强制结束循环 来源: https://www.cnblogs.com/Warmsunshine/p/3780095.html

跟我学做c#皮肤美化(五)

做~自己de王妃 提交于 2020-01-23 05:15:32
跟我学做c#皮肤美化(五) --MainForm窗体的制作2 前续文章导航 先来回顾一下我们上次遗留的问题 1. 消除图中不透明的地方 2. 实现标题栏的拖动 3. 实现窗体的最大化,最小化,关闭功能。 下面就来一个一个解决。 解决不透明的问题: 首先为什么会有灰色的出现呢。不难想到这些灰色就是Picturebox的背景色。边角上的图片对粉红色透明了,但却露出了背景的颜色。知道了原因就好了解决了,就是我们需要将这一块的背景色给透明掉。有人说可以讲picturebox的背景色设置为透明的啊。不错,是可以,但整个窗体的背景色呢?picturebox下面不还是有整个被覆盖的窗体的嘛!窗体是不能像用户控件那样背景色设置为透明的,不过却有一个属性TransparencyKey可以间接的为我们解决这个问题。这个属性的作用是这样的,当这个属性设置为某一种颜色后,那该窗体上的所有的这种颜色将都变为透明色。 所以我们只需将TransparencyKey的颜色和窗体的背景色设置成一样,那么背景色不就自动透明了嘛!在这里我们将所有控件的背景色和TransparencyKey都设置成系统里面的Info颜色(这个颜色你可以自己指定,不过不建议是原来的Control色,因为这样后你再添加一个普通的控件,那么这个控件的一部分也会被透明掉) 实现标题栏的拖动 因为我们的窗体是没有状态栏的

原型设计实践-使用gui design studio进行原型设计

会有一股神秘感。 提交于 2020-01-22 07:37:59
如何制作界面图 在实际开发中,我们常常会用很多工具,绘制界面图。用于描述我们的产品的某个功能对应的界面,将来会是什么样子。 可以使用的工具很多(visio、smartdraw等),也有用excel画框图,来标明程序的各个区域的。其实使用gui design studio,可以很容易的 话界面图。不仅轻松,而且十分的真实,既获得一个很好的效果,也能减少沟通上的一些不便。不仅可以向非开发人员展示,也可以向开发人员展示 你的设计。 1、 新建设计 打开gui design studio,其默认会打开welcome工程。由于我们只是做一个界面效果图,所以不会用到工程那一块的功能。我们就直接使用File菜单下的new菜单项(CTRL+N)新建一个设计。 2、 添加界面控件 右边的面板叫设计器面板,它由多个页签构成。分别对应的功能是:工程面板、元素面板、图标面板、注释面板、故事板、备注面板。而我们要用的是第二个面板“元素面板”。在这个面板上分为上下两部分,上部分是一个分类列表,下部分为各个分类下的元素。当你选择一个分类后,下面的面板就会显示该分类的元素。 要将元素添加到设计文档中,有两种方法。1)用鼠标双击要加入的元素 2)用鼠标单选要加入的元素,不要放鼠标左键,将对应的元素拖拉到文档中。 整个设计文档中间有一个红色线条围成的矩形,这个区域代表屏幕区域。在这个区域里的元素

WPF实现窗体在屏幕内移动拖拽,不超过屏幕边界

梦想与她 提交于 2020-01-21 12:45:43
WPF实现窗体在屏幕内移动拖拽,不超过屏幕边界 最近在项目中遇到WPF弹出窗体只能在屏幕内移动的需求,使用WndProc截获系统消息、ClipCursor API函数控制鼠标可 用区域解决了问题,特意记录以备后用。 public partial class MainWindow : Window { private POINT _mouseDownPos ; private bool _move ; [ DllImport ( "user32.dll" ) ] public static extern bool ClipCursor ( ref RECT lpRect ) ; [ DllImport ( "user32.dll" , CharSet = CharSet . Auto ) ] public static extern bool GetCursorPos ( out POINT pt ) ; public MainWindow ( ) { InitializeComponent ( ) ; } protected override void OnSourceInitialized ( EventArgs e ) { base . OnSourceInitialized ( e ) ; HwndSource hwndSource = PresentationSource

C# winform 自定义皮肤制作

时光总嘲笑我的痴心妄想 提交于 2020-01-21 11:47:02
最近要做个软件正在做技术准备,由于WINFORM生成的窗体很丑陋,一个好的软件除了功能性很重要外,UI的体验也是不容忽视的。习惯性的在网上搜素了下,换肤控件也有好几款,但是有些用起来不是很好用,好点的也要花很多银子哦,而且毕竟是别人写的,心里总不是个滋味,所以决定自己尝试着写写看,花了一个晚上终于做出来了个DEMO,貌似还不错,贴图如下(图片是直接是用的暴风影音的,寒自己一个。。) 下面和大家分享下。 首先分析下皮肤的制作原理,我的理解是把整个窗体(去边框后)划分为9个区域(如果有更复杂的界面,可以划分更多),有图有真相: 然后准备皮肤素材,切图,我的切图如下: 接着可以开工了: 1.初始化图片资源变量 protected int formMinX = 0;//最小化按钮的X坐标 protected int formMaxX = 0;//最大化按钮的X坐标 protected int formCloseX = 0;//关闭按钮的X坐标 protected int formTitleMarginLeft = 0;//标题栏的左边界 protected int formTitleMarginRight = 0;//标题栏的右边界 Image imgTopLeft = (Image)Resources.topleft;//窗体顶部左上角图片 Image imgTopRight =

【自由生长的Python】为了能有资格放弃,tkinter第一个窗体+熟悉git环境【01】

心不动则不痛 提交于 2020-01-21 03:04:02
上手git+第一个tkinter窗体 目标 总结 步骤 Github上新建一个仓库 创建一个本地git仓库 tkinter的第一个窗体 打标签+用标签 目标 上手git和tkinter,利用tkinter显示一个简单窗体,利用git进行代码版本控制。 Github上新建一个库,用来同步文件; 本地新建一个Git仓库,存放开发中的文件; 第一个代码版本的目标:运行网上查到的例子,显示第一个tkinter的窗体; 根据开发目标,给代码版本设置里程碑,打上标签。里程碑的作用是:可以直接根据里程碑的标签,下载代码,复现文章中的内容。 总结 为啥把总结放在开头? 希望能节省点时间。总结的形式是:干了啥,怎么干的。 Github新建仓库 网页操作 本地新建仓库 git inti 本地仓库关联到远程仓库 git remote add origin git push -u master origin 本地仓库增加文件 git add git commit -m “” 本地仓库同步到远程仓库 git pull git push 代码文件打标签 git tag -a git tag -d // 删除标签 myTkinter 这个项目的V1.0.0版本的代码,是参考 python官方tkinter文档页面 中的例子,显示一个带有按钮的窗体。 根据仓库地址和标签获取对应版本的代码,以便自己可是试试 git