C#仿QQ皮肤-常用用户控件EnterFrom1和窗体EntryForm的实现

       

导读部分
-------------------------------------------------------------------------------------------------------------
C#仿QQ皮肤-实现原理系列文章导航 最新版源码下载

http://www.cckan.net/thread-2-1-1.html

   本次是我们窗体实现的最后一节,在这里首先感谢大家的支持,今天所说一个用户控件EnterFrom1和窗体EntryForm其实是分别继承自  基窗体FormBase与基用户控件FormBase1 而来的,而其中EnterFrom1是继承的用户控件EnterUserControl  这个控件而来,而EnterUserControl   又是继承的Formbase1而得来的,具体关于这个控件和窗体的实现请大家参考 相关的章节,而我们今天 要实现的两个小东东,其实是最简单, 因为在CS类里只要一行代码就OK了

实现的效果如下

       

  EnterFrom1

public partial class EnterFrom1 : EnterUserControl 
    {
        
public EnterFrom1()
        {
            InitializeComponent();
        }
    }

 

关键的代码就是第一行,继承一下EnterUserControl 
这个用户控件就行了,而在InitializeComponent()方法中简单的数行代码就可以完全搞定了

 

代码
/// <summary> 
        
/// 设计器支持所需的方法 - 不要
        
/// 使用代码编辑器修改此方法的内容。
        
/// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources 
= new System.ComponentModel.ComponentResourceManager(typeof(EnterFrom1));
            
this.SuspendLayout();
            
// 
            
// pnlBackGroup
            
// 
            this.pnlBackGroup.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pnlBackGroup.BackgroundImage")));
            
this.pnlBackGroup.Size = new System.Drawing.Size(723496);
            
// 
            
// EnterFrom1
            
// 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            
this.Controls.Add(this.pnlBackGroup);
            
this.Name = "EnterFrom1";
            
this.Size = new System.Drawing.Size(723496);
            
this.Controls.SetChildIndex(this.pnlBackGroup, 0);
            
this.ResumeLayout(false);

        }

 

 

再来看一下EntryForm的实现 吧,CS类

 

 public partial class EntryForm : FunctionFormBase    
    {
        
public EntryForm()
        {
            InitializeComponent();
        }
    }

 

它的InitializeComponent()方法代码如下

 

代码
/// <summary>
        
/// Required method for Designer support - do not modify
        
/// the contents of this method with the code editor.
        
/// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources 
= new System.ComponentModel.ComponentResourceManager(typeof(EntryForm));
            
this.SuspendLayout();
            
// 
            
// ptbBottomMiddle
            
// 
            this.ptbBottomMiddle.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ptbBottomMiddle.BackgroundImage")));
            
this.ptbBottomMiddle.Size = new System.Drawing.Size(95137);
            
// 
            
// pnlBackGroup
            
// 
            this.pnlBackGroup.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pnlBackGroup.BackgroundImage")));
            
this.pnlBackGroup.Location = new System.Drawing.Point(231);
            
this.pnlBackGroup.Size = new System.Drawing.Size(967430);
            
// 
            
// EntryForm
            
// 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            
this.ClientSize = new System.Drawing.Size(971498);
            
this.Controls.Add(this.pnlBackGroup);
            
this.Location = new System.Drawing.Point(400300);
            
this.Name = "EntryForm";
            
this.Text = "EntryForm";
            
this.Controls.SetChildIndex(this.pnlBackGroup, 0);
            
this.ResumeLayout(false);

        }

 

其实说白了这两个东西是一个实现原理不同只是一个是窗体,一个是用户控件 而已,其它的差不是很大,相信以后他们两个是用的最多的窗体和用户控件 ,只要大家使用一定会慢慢的深入了解它们的。

  我们实现原理这一块的就到这里了,下次就要到我们的框架的搭建了,呵呵,在这一块才是皮肤的核心东西,讲的是怎么样实现颜色,就是皮肤的转换,和使用,他们是用什么样的方式来实现 的,在写的过程中我会一节一节的分析一下是怎么样实现的,我们都用到了那些GDI+方面的东西,用到了那些方面的Windows消息,和颜色和坐标的一些算法等等。

 

 

转载于:https://www.cnblogs.com/sufei/archive/2010/06/22/1762513.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea中删除java类并提交_IDEA 删除java类的3种提示

1. 点击 delete 删除文件时&#xff0c;会弹出如下选项&#xff1a;Safe delete (with usage search)Search in comments and strings“Safe delete ( with usage search)”, 字面意思是使用搜索安全删除. 是否选中结果分别为:没有选中状态,直接删除.选中状态,删除前IDEA会搜寻…

S3C2440、S3C2450和S3C6410之间区别

S3C2440&#xff1a;  主频400MHz&#xff1b;  SDRam内存控制器&#xff1b;  支持Nor Flash和Nand Flash&#xff08;SLC&#xff09;  支持2种Flash启动&#xff1b;  内部LCD、I2C、Camera等控制器。 S3C2450&#xff1a;  主频533MHz&#xff1b;  双总线架…

mysql指定时间_MySQL查询指定时间的数据

MySQL查询指定时间的数据。亲测可用。

助教小结13

本周总结&#xff1a; 主要为完成团队任务五的批改 整体完成的还可以 第1组、第9组&#xff1a;未点击提交按钮总成绩打八折 优秀作业&#xff1a; 第5组&#xff1a;https://www.cnblogs.com/lishuya/p/11088462.html 千帆竟发图&#xff1a; 转载于:https://www.cnblogs.com/…

Oracle多表连接查询

多个表之间关系&#xff1a;一对多|(多对一) 多对多 一对一 3种 关系的完整性约束&#xff1a;实体完整性、参照完整性、用于定义的完整性。 必须满足实体完整性和参照完整性. 实体完整性&#xff1a;规定了字段|属性的约束 参照完整性&#xff1a;关系与关系之间的引用 某个字…

工作393-注册小程序

每个小程序都需要在 app.js 中调用 App 方法注册小程序实例&#xff0c;绑定生命周期回调函数、错误监听和页面不存在监听函数等。详细的参数含义和使用请参考 App 参考文档 。// app.js App({onLaunch (options) {// Do something initial when launch.},onShow (options) {//…

java工作台无法显示_【Eclipse】使用指南(18)搜索工作台

Searching the workbench搜索工作台In this section, you will search the workbench for Java elements.本小节&#xff0c;你将在工作台中搜索Java元素。In the Search dialog, you can perform file, text or Java searches. Java searches operate on the structure of the…

Gridview 鼠标悬浮光棒效果

代码 1 protectedvoidGridView1_RowDataBound(objectsender, GridViewRowEventArgs e)2 {3 4 //如果是绑定数据行 5 6 if(e.Row.RowType DataControlRowType.DataRow)7 {8 9 //鼠标经过时&#xff0c;行背景色变 10 e.Row.Attributes.Add("onmouseover",11 "cu…

神策埋点

首先进入后台管理点击生成导入代码&#xff1a; 选好选项后点生成&#xff1a; 以下是生成的代码&#xff1a; (function(para) {var p para.sdk_url, n para.name, w window, d document, s script,x null,y null;if(typeof(w[sensorsDataAnalytic201505]) ! undefined…

java 抽象类语法_JAVA基础语法8--多态/抽象类/抽象方法

多态继承、封装、多态、抽象是面向对象编程的四大基本特征。封装隐藏了类的内部实现机制&#xff0c;从而可以在不影响使用者的前提条件下&#xff0c;改变类的内部结构&#xff0c;同时保护了数据。继承是为了重用父类代码&#xff0c;同时为多态做准备。那么&#xff0c;什么…

01-几种应用上下文区别

第一次写博客&#xff0c;有点小激动&#xff0c;写的东西很水&#xff0c;仅供自己加深印象??&#xff0c;有人不介意想参考&#xff1f;那我也不介意&#xff0c;??。。。。 Spring中几种常用的应用上下文有&#xff1a; 1. ClassPathXmlApplicationContext 2. FileSyste…

工作394-注册页面学习

注册页面对于小程序中的每个页面&#xff0c;都需要在页面对应的 js 文件中进行注册&#xff0c;指定页面的初始数据、生命周期回调、事件处理函数等。 使用 Page 构造器注册页面简单的页面可以使用 Page() 进行构造。代码示例&#xff1a;//index.js Page({data: {text: "…

(搬家文) c++引用深入探讨

(偶然翻起自己的旧博,忽然发现大三的时候写的这篇文章,仔细看看觉得写的还是那么回事,所以赶紧搭救出来) 引用的声明: 基本格式&#xff1a;引用类型 &引用名被引用对象 &运算符&#xff1a;声明运算符& 跟取地址运算符&和位异或运算符&没有任何关系ext…

参数作用域实践

auto参数&#xff0c;申明时可以忽略auto void fun(){int p 1;cout<<"p:"<<p<<endl;for(int i0;i<5;i){int p 10;cout<<"p:"<<p<<endl;}// 此处输出的还是外围作用域定义的p值1cout<<"p:"<<…

工作395-路由选择

初始化 新页面入栈 打开新页面 新页面入栈 页面重定向 当前页面出栈&#xff0c;新页面入栈 页面返回 页面不断出栈&#xff0c;直到目标返回页 Tab 切换 页面全部出栈&#xff0c;只留下新的 Tab 页面 重加载 页面全部出栈&#xff0c;只留下新的页面

phpstudy2018修改php版本,phpstudy的php版本自由修改的方法

作为PHP开发的常用工具&#xff0c;phpstudy具有许多强大的功能&#xff0c;它可以连接到MySQL并检查服务器状态&#xff0c;感兴趣的话就随爱站技术频道小编一起来了解phpstudy的php版本自由修改的方法吧&#xff01;网上有着许多的网站集成搭建软件&#xff0c;比较出名的就有…

Sql字符串函数(1)

--1.截取已知长度的函数 Select S1http://www.163.com-- A.截取从字符串左边开始N个字符 Declare S1 varchar(100) 显示结果: http Select Left(S1,4) Select S1http://www.163.com -- B.截取从字符串右边开始N个字符(例如取字符http://www.163.com/) Declare S1 varchar(100) …

工作397-Wxml

WXMLWXML&#xff08;WeiXin Markup Language&#xff09;是框架设计的一套标签语言&#xff0c;结合基础组件、事件系统&#xff0c;可以构建出页面的结构。要完整了解 WXML 语法&#xff0c;请参考WXML 语法参考。用以下一些简单的例子来看看 WXML 具有什么能力&#xff1a; …