窗体

委托编程指南

ⅰ亾dé卋堺 提交于 2020-02-01 10:57:40
一.什么是委托 委托的本质是一种数据类型,和类类型一样,只是一种数据类型没什么神秘的地方,委托是一种引用数据类型, 表示对具有特定参数列表和返回类型的方法的引用 。在实例化委托时,你可以将其实例与任何兼容的方法(参数和返回值,简称方法的签名)相关联,再通俗一点的讲, 委托是可以将"方法"定义成变量的数据类型 。 二.为什么使用委托 委托用于将方法作为参数传递给其他方法,当某个方法直接调用有困难时,我们就想找一个"中间人"来帮我们调用,这个中间人就是委托。 委托的简单应用的第一个例子:从窗体向主窗体传递值,实现主窗体窗体刷新 主窗体: public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); FrmOther objFrm = new FrmOther(); //将从窗体的委托变量和主窗体的对应方法关联 objFrm.msgSender = this.Receiver; objFrm.Show(); } /// <summary> /// 接收委托传递的信息 /// </summary> /// <param name="counter"></param> private void Receiver(string counter) { this.lblCount.Text =

C# C/S结构数据库系统框架详解(一)[vjsdn]

别来无恙 提交于 2020-01-31 09:25:01
自发布 《多文档界面(MDI)系统框架-C#完整版》 后又有了新想法,就是再写个C#版C/S结构系统框架。 因时间关系断断续续写了很久。借周日机会,我将源代码整理好再写些说明文档发布出来,希望给大家 带来学习机会。 特别声明的是: C/S结构系统框架是优化和改编自几个大型系统,是经历过考验和实际应用的。希望大家好好珍惜。这个框架有很多学习要点,提醒大家不仅仅是下载代码而应该去好好研究,甚至阅读每一行代码每一个模块每一个细节! 你学会了它也许将来作为一个优秀架构师需要设计同样一个系统时,这时你用上它,不是事半功倍么? 另外,请尊重作者版权,写一个框架的确需要大量时间和精力。程序员有个共性是写作永无止境,虽是深夜2点,但我们仍在思考,仍在写作! 眼睛睡觉了但思维和创作动力仍在冗奋中,作为一个程序员的你,我说的对吗?有同样的感受吗? 所以: 转载时请注明本文来自易学网 www.vjsdn.net ! 言归正传,接下来讲解系统框架实现过程。 首先看几个图对框架有个初步认识。 1.登陆窗体 准备登录窗体 如通过验证用户,则加载MDI主窗体,留意图片内的动态消息: 正在初始化用户界面,请稍候. 登录窗体是多数应用程序的入口,在进入系统前需要用户验证。请看实现过程: 2.MDI主窗体 登录成功后显示MDI主窗体. 图片为测试模块II的主界面. 登录成功后显示MDI主窗体.

qt中setGeometry()函数与move()函数

人盡茶涼 提交于 2020-01-31 00:47:42
setGeometry()函数是对窗体的综合设置,有四个参数,分别是坐标和长宽,但是注意,如果窗体是顶级窗体,例如Qwidget类设置的窗体时,设置的坐标只是窗体内灰色框的坐标,这是如果加上move()函数,就可以对窗体外部的边框进行位置的设定。 来源: CSDN 作者: 浓茶淡酒 链接: https://blog.csdn.net/s15810751918/article/details/104116786

陈伟视频——(16—19)窗体

为君一笑 提交于 2020-01-30 11:08:40
## 陈伟视频(16—19)窗体 陈伟视频16   窗体的管理   程序中的窗体    ·SDI    ·MDI   ·其他(Dialog,Flash…)    · 窗体的方法   ·其他    Me代表当前的活动对象 陈伟视频17   窗体的事件    窗体加载:Initatialize 加载所有控件:Load    窗体的激活:Activate 关闭窗口: QueryUnload     决定“我”是否关闭就这QueryUnload里面写,否则就这Unload里面写     Unload不能直接访问窗体,控件属性,但他能做一些全局的变化如:全局变量的初始化,全局的终值。     Keypress键盘输入 它是keyup,keydown的合成     keyup,keydown处理一些键盘不常用的消息     KeyCode As Integer中keycode的意思为返回按键的ASCII码     Dragdrop Dragover 主要用于鼠标的拖拽,     Dragover是连续产生的,不断更新鼠标光标所在     Ole...对象的链接与嵌入     Resize改变窗体的大小,或者通过代码来改变窗体的大小 陈伟视频18 窗体的标题  窗口相关的:T op left width Height   客户的用户区: Scaleheight,scaleleft

python调用操作系统的库函数

非 Y 不嫁゛ 提交于 2020-01-29 01:00:35
调用操作系统的库函数 我们知道python解释器本质上就是使用C语言写出来的一个软件,那么操作系统呢?操作系统本质上它也是一个软件,不管是Windows、linux、macOS都自带了大量的共享库,那么我们就可以使用python去调用。 from ctypes import * import platform # 判断当前的操作系统平台。 # Windows平台返回"Windows",linux平台返回"Linux",macOS平台返回"Darwin" system = platform.system() # 不同的平台共享库不同 if system == "Windows": libc = cdll.msvcrt elif system == "Linux": libc = CDLL("libc.so.6") elif system == "Darwin": libc = CDLL("libc.dylib") else: print("不支持的平台,程序结束") import sys sys.exit(0) # 调用对应的函数,比如printf,注意里面需要传入字节 libc.printf(b"my name is %s, age is %d\n", b"van", 37) # my name is van, age is 37 # 如果包含汉字就不能使用b""这种形式了

将webkit内核封装为duilib的浏览器控件

半腔热情 提交于 2020-01-27 23:50:33
转载请说明出处,谢谢~~ 原本的duilib是自带浏览器控件的,但是使用了IE内核,我在做仿酷狗音乐播放器时,在右侧乐库要用到浏览器控件,而我使用自带的IE控件却发现了不少缺点,这也是duilib一直没有解决的,编程群里的朋友也反映IE控件不好用。而目前最常用的浏览器内核一个是IE内核,另一个是webkit内核。 先简单介绍一下这个webkit内核 WebKit 是一个 开源 的 浏览器 引擎,与之相对应的引擎有 Gecko (Mozilla Firefox 等使用)和 Trident (也称 MSHTML , IE 使用)。同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于 Safari , Dashboard , Mail 和其他一些 Mac OS X 程序。WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎 和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的 源码 结构、极快的 渲染 速度。 Apple 将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的 浏览器 Safari。 WebKit 内核在手机上的应用也十分广泛,例如 Google 的手机 Android 、 Apple

013 C# Windows应用程序中的OOP

泄露秘密 提交于 2020-01-27 02:33:17
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 控件类的实现 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ((Button)sender).Text = "Clicked!"; Button newButton = new Button(); newButton.Text = "New1!"; newButton.Click += new EventHandler(newButton_Click); Controls.Add(newButton); } private void newButton_Click(object sender,System

winform 窗体、多线程影响

柔情痞子 提交于 2020-01-27 00:05:57
1.窗体的隐藏与显示 this.show() this.Hide() 2.MDI多文档界面 设置父窗体,IsMDIContainer = true; 设置子窗体,Form2 fr2 = new Form2(); fr2.MdiParent = this; fr2.Show(); MDI子窗体排列:MDILayOut.Horizal:水平平铺,垂坠平铺,叠层平铺 3.继承窗体实现的两种方式: 通过编写代码 :Form2 : WinFormApplication.Form1;一定是命名空间.窗体对象; 通过窗体选择器:通过项目添加winform窗体中的继承窗体。 修改子窗体中控件的属性,父窗体中的属性Medifiers设置为public,否则不能修改子窗体中的属性。 4.读取注册表中的信息 主要通过RegistryKey类中的OpenSubKey方法,GetSubKeyNames方法,GetValueNames方法实现 5.使用多线程的3种情况 1)执行占用大量时间的操作 2)区分具有不同优先级的任务 3)使用户界面可以在将时间分配给后台任务时仍能快速做出响应 6.使用多线程将产生的不良情况 1)因为线程为占用内存空间,使用多线程后,创建进程、AppDomain对象及线程数目将受到内存的限制 2)跟踪大量的线程将耗费大量的处理器时间,如果线程过多,则其中大多数线程不会产生明显的进度

c# 避免重复打开已存在的窗体

。_饼干妹妹 提交于 2020-01-26 22:38:10
通过按钮事件定义了一个开窗口的操作,每次点击按钮就会弹出新窗口,但是多次点击会出现多个相同的窗口,这样的对于之后的处理不方便,也不利于用户的使用体验,所以就需要在点击按钮时判断窗体是否已经存在,存在则激活,不存在则新建; 在按钮点击事件中定义如下: Boolean flag = false;//判断标志 FormCollection formCollection = Application.OpenForms;//获取存在的窗体集合 foreach (Form name in formCollection)//循环遍历,判断 { if (name.Name == "FrmSelectName")//判断是否存在该窗体 { flag = true;//修改标志 name.Activate();//存在,则激活 } } if (flag == false)//不存在,则新建 { FrmSelectName frmSelectName = new FrmSelectName(); frmSelectName.StartPosition = FormStartPosition.Manual; Point pt = MousePosition;//获取屏幕鼠标坐标 frmSelectName.Left = pt.X - 90; frmSelectName.Top = pt.Y + 13;

C# GDI+双缓冲技术

不羁的心 提交于 2020-01-25 01:22:56
GDI+的双缓冲问题 我想有很多搞图形方面的朋友都会用到双缓冲技术的时候,而且有的时候她的确是个头疼的问题。最近我也要用双缓冲技术,程序怎么调试都不合适,当要对图形进行移动时,总是会出现闪烁抖动。在网上找了些资料,说得都不清不楚的,折腾了一晚上也没弄出来。第二天觉定自己研究一下。现在把自己的一些想法拿出来跟大家分享一下。 双缓冲的基本原理:(转) 一直以来的误区:.net1.1 和 .net 2.0 在处理控件双缓冲上是有区别的。 .net 1.1中,使用:this.SetStyle(ControlStyles.DoubleBuffer, true); .net 2.0中,使用:this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); 怪不说老是提示参数无效,一直也不知道是这个问题,呵呵 要知道,图元无闪烁的实现和图元的绘制方法没有多少关系,只是绘制方法可以控制图元的刷新区域,使双缓冲性能更优! 导致画面闪烁的关键原因分析: 一、绘制窗口由于大小位置状态改变进行重绘操作时 绘图窗口内容或大小每改变一次,都要调用Paint事件进行重绘操作,该操作会使画面重新刷新一次以维持窗口正常显示。刷新过程中会导致所有图元重新绘制,而各个图元的重绘操作并不会导致Paint事件发生,因此窗口的每一次刷新只会调用Paint事件一次