WinForm界面开发之“分页控件”

WinForm界面开发之“分页控件”
WinForm界面开发之“分页控件”

WinForm界面开发之“分页控件”

在程序中,分页总是永远的话题,因为数据总是很多很多,分页展示在程序性能和数据查看感官方面得到很好的平衡,是一种良好的编程习惯和UI设计。

Winform中的分页控件可能没有https://www.360docs.net/doc/f62301328.html,世界中的分页控件那么丰富多彩,不过也有不少的分页控件可以采用,各个人的可能都有一些不同的东西,一些好的东西。就我而言,我希望控件能够尽可能的多一些功能,耦合性低一些,例如我不想是基于存储过程的,因为我很多程序需要使用Access作为数据库,一般来说,我还希望有导出Excel数据的功能,还有打印预览功能,由于我的数据源表头,如实体类集合、表格内容绑定的时候,表头是英文的,我需要变为中文的,其他的功能有则更好。本篇介绍我在我的共享软件中大量使用的分页控件,如送水管理系统软件、病人资料管理软件等等,希望大家有兴趣的话,可以一起讨论使用该分页控件。以便整理吸收更多好的特性,共同学习。

先给大家一个总体感觉,这是我在送水软件中的界面展示,红色圈圈部分是分页控件的展示界面。

大家可以看到,除了基本的分页外,还有其他功能,如导出当前页、导出全部页、打印列表、以及相关功能操作的菜单(只要实现了相关的接口,则呈现相同的菜单,另外还有一些小地方,也是很常用关键的地方,就是间隔行的颜色变化,表头的中文化,行提示内容等等,我认为这些分页控件应该做的,特别是表头中文化部分很重要,因为这个分页控件的数据源是基于一般的对象集合(如List())或者DataTable的,因此数据源的表头可能是英文的(一般都是^_^)。

导出Excel是基本的功能,本控件支持当前页导出,全部页导出两种模式,导出的Excel 数据也还是比较好看的,不是一般的格式哦。

控件另外一项功能,也是集实用功能之所成,打印当前列表内容,如下图所示,该内容会保存用户在每个列表数据中的信息,打印不同的表头内容,如下图所示。

那么控件应该如何使用呢,下面介绍一下使用的相关代码。

1、首先在Form_Load事件中绑定相关的委托处理事件,默认有“新建”、编辑选定项、删除、刷新、打印几个按钮,您可以在此基础上增加更多的菜单。

private void FrmProduct_Load(object sender, EventArgs e)

{

BindData();

this.winGridViewPager1.ProgressBar = this.toolStripProgressBar1.Pro gressBar;

this.winGridViewPager1.OnPageChanged += new EventHandler(winG ridViewPager1_OnPageChanged);

this.winGridViewPager1.OnStartExport += new EventHandler(winGrid ViewPager1_OnStartExport);

this.winGridViewPager1.OnEditSelected += new EventHandler(winGri dViewPager1_OnEditSelected);

this.winGridViewPager1.OnAddNew += new EventHandler(winGridVie wPager1_OnAddNew);

this.winGridViewPager1.OnDeleteSelected += new EventHandler(win GridViewPager1_OnDeleteSelected);

this.winGridViewPager1.OnRefresh += new EventHandler(winGridVie wPager1_OnRefresh);

this.winGridViewPager1.AppendedMenu = this.contextMenuStrip1;

}

2。实现表头解析和上面的委托时间的例子代码如下.

private void winGridViewPager1_OnRefresh(object sender, EventArgs e) {

BindData();

}

private void winGridViewPager1_OnDeleteSelected(object sender, Event Args e)

{

if (MessageUtil.ShowYesNoAndTips("您确定删除选定的记录么?

") == DialogResult.No)

{

return;

}

DataGridView grid = sender as DataGridView;

if (grid != null)

{

foreach (DataGridViewRow row in grid.SelectedRows)

{

BLLFactory.Instance.Delete(row.Cells["ID"].Value.To String());

}

BindData();

}

private void winGridViewPager1_OnEditSelected(object sender, EventAr gs e)

{

DataGridView grid = sender as DataGridView;

if (grid != null)

{

foreach (DataGridViewRow row in grid.SelectedRows)

{

FrmEditProduct dlg = new FrmEditProduct();

dlg.ID = row.Cells["ID"].Value.ToString();

if (DialogResult.OK == dlg.ShowDialog())

{

BindData();

}

break;

}

}

}

private void winGridViewPager1_OnAddNew(object sender, EventArgs e) {

btnAddNew_Click(null, null);

}

private void winGridViewPager1_OnStartExport(object sender, EventArg s e)

{

PagerInfo pagerInfo = new PagerInfo();

pagerInfo.CurrenetPageIndex = 1;

pagerInfo.PageSize = int.MaxValue;

this.winGridViewPager1.AllToExport = BLLFactory.Instance .GetAllToDataSet(pagerInfo).Tables[0];//product.GetAllToDataSet(pagerInfo).

}

private void winGridViewPager1_OnPageChanged(object sender, EventA rgs e)

{

BindData();

}

private void BindData()

{

#region添加别名解析

this.winGridViewPager1.AddColumnAlias("ID", "编号");

this.winGridViewPager1.AddColumnAlias("ProductType", "产品类型");

this.winGridViewPager1.AddColumnAlias("ProductName", "产品名称");

this.winGridViewPager1.AddColumnAlias("Specification", "产品规格");

this.winGridViewPager1.AddColumnAlias("Model", "产品型号");

this.winGridViewPager1.AddColumnAlias("OfferPrice", "进货价");

this.winGridViewPager1.AddColumnAlias("AdvisePrive", "建议价");

this.winGridViewPager1.AddColumnAlias("SalePrice", "零售价");

this.winGridViewPager1.AddColumnAlias("Manufacture", "生产厂商");

this.winGridViewPager1.AddColumnAlias("Manufacture_ID", "厂商ID");

this.winGridViewPager1.AddColumnAlias("Note", "备注");

this.winGridViewPager1.AddColumnAlias("LastUpdated", "更新日期");

#endregion

SearchCondition condition = new SearchCondition();

condition.AddCondition("ProductName", this.txtName.Text, SqlOperat or.Like)

.AddCondition("ProductType", this.cmbProductType.Text, SqlOpera tor.Like)

.AddCondition("Specification", this.cmbSpecNumber.Text, SqlOper ator.Like)

.AddCondition("Note", this.txtNote.Text, SqlOperator.Like)

.AddCondition("Manufacture", this.cmbManufacture.Text, SqlOpera tor.Like);

string where = condition.BuildConditionSql().Replace("Where", "");

List list = BLLFactory.Instance.Find(where, t his.winGridViewPager1.PagerInfo);

this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.So rtableBindingList(list);

}

这样就实现了分页控件的内容展示以及相关功能的菜单挂接,实现后的菜单展示可能是这样子的,如下图所示,是否还可以呢,呵呵.

最后呈上控件文件一个, 大家有兴趣可以下载下载玩玩,使用有问题请在此留言. https://www.360docs.net/doc/f62301328.html,/wuhuacong/PagerWinControl.rar

C#(.net)分页控件源码(已测试)

分页控件的用法 align类: using System; namespace MyPaperControls { ///

/// Align 的摘要说明。 /// public enum Align { Center = 0, Left = 1, Right = 2 } } MyPager类: using System; using https://www.360docs.net/doc/f62301328.html,ponentModel; using System.Diagnostics; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Resources; using System.Collections; using System.Collections.Specialized; using System.Text; using System.Text.RegularExpressions; using System.Drawing; using https://www.360docs.net/doc/f62301328.html,pilerServices; using MyPaperControls.Designer; [assembly:TagPrefix("MyPaperControls", "MP")] namespace MyPaperControls { [ ToolboxData("<{0}:MyPaper runat=server>"), ValidationPropertyAttribute("Text"), Designer(typeof(MyPaperControls.Designer.MyPaperDesigner)), DescriptionAttribute("跳转到此页面") ] [ParseChildren(true)]

C# WinForm自定义控件开发实例

C# WinForm自定义控件开发实例 最近做一个图象的采集,需要一个图形的选择控件,但是在.net下没有类似vb中的shape控件,所以考虑了自己写一个控件。下面我将从头创建控件,这个控件主要是用来选择图形的Rectangle,有一下几个属性Color BorderColor:边框颜色,Color BackColor:背景颜色,bool ReSizeble:是否可移动,Rectangle SelectRectangle:选择区域。 打开vs2003(我用的这个版本),新建一个c#控件库,ok,拷贝如下代码到你的代码里。using System;using System.Collections;using https://www.360docs.net/doc/f62301328.html,ponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;namespace WindowsExtendedControls{ /// /// 控件/// public class ShapeEx : System.Windows.Forms.Control { /// /// 必需的设计器变量。/// /// private Color _BorderColor=new Color(); private Color _BackColor=new Color(); private bool _ReSizeble; private Point _SelfLocation=new Point(); private Point _MouseLocation=new Point(); private int _SelfWidth; private int _SelfHeight; private int _SelectSelctedIndex;//0-8,0:SizeAll private Rectangle

Bootstrap组件功能:路径组件、分页组件、标签组件和徽章组件

https://www.360docs.net/doc/f62301328.html, Bootstrap组件功能:路径组件、分页组件、标签组件和徽章组件 本节课我们主要学习一下Bootstrap的四个组件功能:路径组件、分页组件、标签组件和徽章组件。 一.路径组件 路径组件也叫做面包屑导航。 //面包屑导航

  • 首页
  • 产品列表
  • 韩版2015年羊绒毛衣 二.分页组件 分页组件可以提供带有展示页面的功能。 //默认分页
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • https://www.360docs.net/doc/f62301328.html,

  • »
  • //首选项和禁用 1 2 //设置尺寸,四种lg、默认、sm和xs //翻页效果
  • 上一页
  • 下一页
  • //对齐翻页链接 上一页 下一页 //翻页项禁用 上一页 三.标签 //在文本后面带上标签

    《.NET-WinForm编程》课程设计-模板

    《.NET WinForm编程》课程设计题目:智能QA系统的设计与实现 学院/ 系软件学院 专业信息管理与信息系统专业(日英强化)年级 2009级 学号 00988**** 作者姓名 **** 2012年 7月 5日

    本次课程设计题目为智能QA系统的设计与实现,首先介绍了QA技术的现状,然后提出一个基于QA的数字信息化领域的架构,并对相关关键技术进行了讨论,最后说明了QA在数字信息化领域的应用前景。 本系统由三个模块组成,QA管理模块、答案管理模块和信息查询模块。QA管理模块包括信息的新增,修改,删除。答案管理模块实现了答案的基本操作,信息查询模块要求在输入查询条件后,会根据一定的逻辑输出答案。由于各模块的分开及进入系统前验证用户身份,也加强了各种信息的安全性及保密性。 根据系统所需功能,决定以Windows XP为开发平台,采用SQL Server 2005做后台数据库,选择功能强大的Visual Studio 2008为开发工具,利用软件工程思想和方法,总体上用结构化生命周期法进行系统分析和设计,采用快速原型法来实现,系统本系统界面友好,与目前市场上的主流游戏软件大体一致,而且操作更加简单,使用方式和微软各种软件(Windows、Office)基本相同,减少了用户学习、使用本游戏系统的额外负担。本文通过系统概述、系统分析、系统设计、系统实施、开发总结五章,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结。 该系统使用了功能强大的.NET WinForm开发技术,使用了基于MVC机制的三层架构。操作方便,可维护性强。经过大量的测试,基本符合用户需求。 关键字:智能OA;信息查询;三层架构;C#

    SpringBoot实现分页插件

    实现分页插件的具体步骤: 1.导入jar包 com.github.pagehelper pagehelper-spring-boot-starter 1.2.5 org.springframework.boot spring-boot-starter-test test 2.(两种)在application.yml(propreties)文件加上 第一种:yml pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql 第二种:propreties pagehelper.helper-dialect=mysql pagehelper.reasonable=true pagehelper.support-methods-arguments=true pagehelper.params=count=countSql 3.在controller控制层编写代码 @GetMapping("/getAllPerson") public String getAllPerson(Model model,@RequestParam(defaultValue="1",value ="pageNum") Integer pageNum, String singleName){ PageHelper.startPage(pageNum,2); //设置当前页码,每页的行数 Listlist=aaService.getAllPerson(singleName); //查询的集合 PageInfopageInfo=new PageInfo(list); //把查询的集合放入pageInfo返回给页面 model.addAttribute("pageInfo",pageInfo); model.addAttribute("name",singleName); return"index"; } 4.编写页面 当前页,总页,共条记录 首页 上一页 下一页 尾页

    实验1:WinForm程序设计

    实验一:WinForm程序设计 实验名称:WINFORM程序设计学时安排: 2课时实验类别:验证型、设计型实验要求:1人1组 一、实验目的和任务 1.掌握创建WinForms应用程序的步骤 2.熟悉WinForms应用程序的控件 二、注意事项和要求 1.第一部分必须要完成,第二部分尽量完成,第三部分供有余力的同学完成; 2.完成后上传项目压缩文件到ftp服务器指定目录,压缩文件名称:学号(后两位)-姓名。 三、实验内容和步骤 1.第一部分:跟着老师练习 1)创建一个名为AppSum的WinForms应用程序,要求用户在文本框中输入2个数字, 然后求2数之和。效果如下图所示: 2.第二部分:自己思考练习 1)创建一个Windows窗体应用程序,允许用户从给定的颜色和字体列表中选择颜色、字 体等设置。用户还可以通过将标准颜色用作基本颜色来创建自定义颜色,并使用滚动 条来增大/减小红色、蓝色和绿色的渐变。选定的颜色应适用于窗体界面。选定的字体 中应显示一个文本示例。效果如下图所示:

    2)具体步骤: 新建一个名为AppSettings的Winforms应用程序项目,并将主窗体重命名为FrmSettings。 拖动一个TabControl控件到窗体上,name属性改为tagSettings;选择tagSettings 控件的TabPages属性并单击右边的“…”按钮;出现“TabPage集合编辑器”对 话框。添加两个选项卡页,并将其分别命名为tabColor和tabFont,对应的Text 属性设置为“颜色”和“字体”。 拖动工具箱中的控件来设计窗体,颜色标签页对应的窗体如下:

    JPAGES分页控件案例

    //需要导入的样式表,与js文件 /** *css *jPages.css控制分页按钮条的样式,不需要样式的可以不用导入 *animate.css控制要显示的数据的动画效果,不需要动画可以不用导入 *github.css这个不知道是搞什么的,不导入也没发现改变了什么 *js文件jPages.js和jquery肯定是必须的,其他的就看自己了 */ Js代码: $("#tbody").empty();//删除tbody中已经存在的数据 var str=""; $.ajax({ url:'jq/getShipInfoByShipName.action', data:{"shipName":$("#shipNameId").val()},//执行后台Action参数 dataType:'json', type:'post', //回调函数执行之前的动作 beforeSend:function(){ //这是我设置的一个加载中的图标,trShow为图标显示的行 //在数据加载出来之前,显示加载中这个图标,加载完成,隐藏 $('#trShow').css("display","block"); }, success:function(data){ var result=data; //返回数据位json格式,遍历json,拼凑成table中的行 for(var i=0;i"+result[i].shipName+" "+result[0].remark+""; } //追加如tbody中 $("#tbody").append(str);

    WinForm控件开发基础教程四控件属性

    WinForm控件开发基础教程四控件属性 前一篇文章介绍了常用的设计时Attribute。其中BrowsableAttribute,CategoryAttribute,DescriptionAttribute,DefaultPropertyAttribute,DefaultEventAttribute都是比较简单的,也是可有可无,但是为了提供更好的用户体验这些Attribute最好不要省掉,如果你对这些Attribute还不熟悉,可以参考我前一篇文章的描述或者查看MSDN,这里我就不在赘述了。下来我们主要介绍一下DesignerSerializationVisibilityAttribute和TypeConverterAttribute。 DesignerSerializationVisibilityAttribute的功能是指示一个属性是否串行化和如何串行化,它的值是一个枚举,一共有三种类型Content,Hidden,Visible。Content指示代码生成器为对象包含的内容生成代码,而不是为对象本身,Hidden指示代码生成器不为对象生成代码,visible指示代码生成器为对象生成代码。假如你的控件有一个集合属性,又想在设计时自动将集合属性的内容生成代码,那么就使用这个Attribute,并将值设为DesignerSerializationVisibility.Content。 TypeConverterAttribute的作用就更大一些,也稍微复杂一些。TypeConverterAttribute主要的目的是为属性指定一个类型转换器,这个转化器可以将属性的值转换城其它的类型。.NET 框架已经为大部分常用的类型都提供了类型转换器,比如Color就有ColorConverter,枚举类型就有EnumConverter,等等,所以一般情况下你没有必要写类型转换器,如果你的属性的特殊的类型或者自定义的类型那么就必须要写了。类型转换器都是从https://www.360docs.net/doc/f62301328.html,ponentModel.TypeConverter派生出来的,你需要重写其中的一些方法来达到转换的目的,在我们开发的过程中,其实只关心属性的值如何转换成字符串(因为属性的值需要在属性浏览器里显示出来,属性浏览器里显示的都是字符串)和源代码(需要自动为属性的值生成源代码以实现持久化),当然反过来,也要将字符串和源代码转换成属性的值。另外使用TypeConverter也可以实现子属性,让属性的子属性也显示在属性浏览器里,并且可以折叠。 接下来我就写一个简单的控件来演示一下这个控件。代码如下: using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Drawing; using https://www.360docs.net/doc/f62301328.html,ponentModel; using System.Collections; namespace CustomControlSample { public class MyListControl:System.Windows.Forms.Control { private List_list=new List(); public MyListControl()

    GridView控件自定义分页详解

    GridView控件自定义分页详解 在这里我们将用一个隐藏字段来保存这个PageIndex,即当前页码.当点击上一页时,将它的值减一,知道为0,要注意的一点这里的第一页页码是0而不是1.下面看看代码,然后我们再分析分析! 1 2 3 4 6 7 9 10 11

    12 13 首页 14 上一页 15 下一页 16 尾页 17
    CS文件中的代码: 1 protected void PagerButton_Click(object sender, EventArgs e) 2 { 3 int pageIndx = Convert.ToInt32(CurrentPage.Value); 4 int totals = NewsManager.GetNews(0, pageSize).TotalRecords; 5 int pages = (totals % pageSize) == 0 ? (totals / pageSize) : (totals / pageSize + 1); 6 string arg = ((LinkButton)sender).CommandArgument.ToString().ToLower(); 7 switch (arg) 8 { 9 case "prev": 10 if (pageIndx > 0) 11 { 12 pageIndx -= 1; 13 } 14 break; 15 case "next": 16 if (pageIndx < pages - 1)

    C# WinForm窗体及其控件的自适应

    C# WinForm窗体及其控件的自适应 C# WinForm窗体及其控件自适应各种屏幕分辨率 一。说明 我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可。因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标。 在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化。为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗体和其控件的初始位置和大小,2.根据窗体变化了的大小,成比例地实现其控件的水平和垂直方向的变化,也就是自适应。 二。使用方法 使用方法很简单, 1.把自适应的类整体复制到你的工程命名空间里, 然后在需要自适应的窗体中做3步即可: 2.声明自适应类实例。 3.为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件初始位置和大小 4.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 三。完整代码如下: (一)。自适应窗体的代码: using System; using System.Collections.Generic;

    using https://www.360docs.net/doc/f62301328.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { //1.声明自适应类实例 AutoSizeFormClass asc = new AutoSizeFormClass(); public Form1() { InitializeComponent(); } //2. 为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件的初始位置和大小 private void Form1_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); } //3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 private void Form1_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } } }

    winform中DataGridView实现分页功能

    winform中DataGridView实现分页功能 在winform的设计中,要实现对DataGridView控件的分页功能,需要两个控件:BindingSource、BindingNavigator,根据需求可对BindingNavigator进行自由的扩展,下图的示例则是根据一般需求对分页功能的实现。红色区域是对BindingNavigator控件扩展后的效果。 具体实现过程: //窗体构造方法中定义分页所需变量: int pageSize = 0; //每页显示行数 int nMax = 0; //总记录数 int pageCount = 0; //页数=总记录数/每页显示行数 int pageCurrent = 0; //当前页号 int nCurrent = 0; //当前记录行 DataTable dtInfo = new DataTable(); //存取查询数据结果 //分页功能实现

    public void InitDataSet() { //判断每页显示记录数是否为空,在初始话窗体时为真 if (txtRecordNumOfPage.Text.Trim() == "") { try { //pageSize = Convert.ToInt16(ConfigurationManager.AppSettings["PageSize"]); //设置页面行数 //读取配置文件中设置的每页显示条数 string szConfigFileName = Application.ExecutablePath + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(szConfigFileName); XmlNode root = doc.SelectSingleNode("configuration"); XmlNode node = root.SelectSingleNode("appSettings/add[@key='PageSize']"); XmlElement el = node as XmlElement; pageSize = Convert.ToUInt16(el.GetAttribute("value")); } catch { } if (pageSize == 0) {

    WinForm界面布局

    WinForm界面布局 Dock&Anchor Dock和Anchor是水火不容的,同时给控件设置Dock和Anchor属性时后设置的会覆盖前面的设置。 Dock 我初接触WinForm的时候发现控件的Width和Height只能是int,不能设置为百分比,那个时候就想子控件如何跟着父控件而变化呢?父控件变大就变大,而且还填满那个区域。甚至以为这个需要通过代码来解决,如是在SizeChanged事件里…… 后来才发现我要的就是Dock给的,Dock是停靠的意思。Dock属性的类型是DockStyle枚举: 1:public enum DockStyle 2:{ 3:None=0, 4:Top=1, 5:Bottom=2, 6:Left=3, 7:Right=4, 8:Fill=5 9:} 默认是None,当为Left的时,就表示子控件停靠在父控件的左边区域,并把左区域填充满: 上图中的Panel总是会停靠在Form的左边区域,不管如何调整Form的高度,它总是能把左边区域填满。Dock麻烦的地方在于多个控件碰到一起时,比如有两个Panel都设置为Left 该怎么办?我们会发现向父控件的Controls集合中添加子控件,越晚添加具有更高的“优先级”(不知道有没有这个说法,这是我杜撰的)。这里的优先级指的是,子控件“优先级”越高,

    越靠近父控件边缘,其他子控件就得避让: [我的见解;通过选中控件,一般是pannel,右键选择置为底层,来决定控件间的优先级] this.Controls.Add(this.panel1); this.Controls.Add(this.panel2); Panel2后添加进去,所以它具有更高的优先级,更靠近Form的边缘。这个规则不仅仅对于Dock都设为Left的有效,对Dock属性不同,但是碰到一起的子控件也适用: 1:this.panel1.Dock=DockStyle.Left; 2:this.panel2.Dock=DockStyle.Left; 3:this.panel3.Dock=DockStyle.Top; 4: 5:this.Controls.Add(this.panel1); 6:this.Controls.Add(this.panel2); 7:this.Controls.Add(this.panel3); panel3的Dock设置为Top,最后添加到Controls集合中,所以具有最高的优先级,其他两个panel都得避让:

    winform窗体和控件自适应

    有时winform窗体的大小会改变,此时窗体上的控件会很混乱,如何可以使控件自适应窗体呢?以 下就是方法: 1、首先在自己的命名空间里先建一个Autosize.cs类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace 自己的命名空间 { class Autosize { public void setTag(Control cons) { foreach (Control con in cons.Controls) { con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; if (con.Controls.Count > 0) setTag(con); } } string[] mytag; public void setControls(float newx, float newy, Control cons) { foreach (Control con in cons.Controls) { if (con.Tag != null) { mytag = con.Tag.ToString().Split(new char[] { ':' }); float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a; a = Convert.ToSingle(mytag[1]) * newy; con.Height = (int)(a); a = Convert.ToSingle(mytag[2]) * newx; con.Left = (int)(a); a = Convert.ToSingle(mytag[3]) * newy; con.Top = (int)(a); Single currentSize = Convert.ToSingle(mytag[4]) * Math.Min(newx, newy); }

    js多功能分页组件layPage使用方法详解

    这篇文章主要为大家详细分享了laypage分页控件使用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文的主要目的就是为大家分享layPage 多功能的js分页组件具体操作方法,供大家参考,具体内容如下 php 部分 function index(){   header('Content-Type:text/html;charset=utf-8');   // 获取当前页码,默认第一页,设置每页默认显示条数   $nowpage = I('get.page', 1, 'intval');   $limits = 8;   // 获取总条数   $count = M('Article') -> where(array('status'=>array('egt', 0))) -> count();   // 计算总页面   $allpage = ceil($count / $limits);   $allpage = intval($allpage);   $lists = M('Article') -> where(array('status'=>array('egt', 0)))           -> page($nowpage, $limits) // page 方法分页          -> order('createtime desc')           -> select();   // 跳转分页输出   $this -> assign('lists', $lists);   $this -> assign('allpage', $allpage);   $this -> assign('nowpage', $nowpage);   $this->display();   /*   // ajax 分页输出   $info = array('lists'=>$lists,'allpage'=>$allpage,'nowpage'=>$nowpage);   $this->ajaxReturn($info,'json');   */  } js 中laypage(新版本) 跳转分页 // 分页 laypage({   cont: 'show_pages', // 分页容器   pages: "{$allpage}",   // 总页数   skip: true, //是否开启跳页   curr: function(){     var page = "{$nowpage}"; // 当前页(后台获取到的)     return page ? page : 1; // 返回当前页码值   }(),   jump: function(e, first){ //触发分页后的回调(单击页码后)     if(!first){ //一定要加此判断,否则初始时会无限刷新

    Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果

    这篇文章主要介绍了Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧 Bootstrap Paginator分页插件下载地址: DownloadVisit Project in GitHub 1.这是需要分页的页面放的js函数: <span style="font-size:14px;">function paging(page){  $.ajax({  type: "GET",  url: "${ctx}/api/v1/user/1/"+(page-1)+"/5",  dataType:"json",  success: function(msg){  ....//省略(查询出来数据)  }  });  $.ajax({  type: "GET",  url:"${ctx}/api/v1/user/count/1",  dataType:"json",  success:function(msg){  var pages = Math.ceil(msg.data/5);//这里data里面有数据总量  var element = $('#pageUl');//对应下面ul的ID  var options = {  bootstrapMajorVersion:3,  currentPage: page,//当前页面  numberOfPages: 5,//一页显示几个按钮(在ul里面生成5个li)  totalPages:pages //总页数  }  element.bootstrapPaginator(options);  }  });  }</span>  页面: <span style="font-size:14px;"><ul class="pagination" id="pageUl">  </ul></span> *li里面自动生成的 2.最重要也是最核心的是要自己改下bootstrap-paginator.js源文件,如下: <span style="font-size:14px;">onPageClicked: function (event, originalEvent, type, page) {  //show the corresponding page and retrieve the newly built item related to the page clicked before for the event return  var currentTarget = $(event.currentTarget);  switch (type) { 

    如何在WPF中使用Windows Form控件

    如何在WPF中使用Windows Form控件 由于WPF中没有没有DateTimePicker控件,网上有人写的又不太好用,而在WinForm中有此控件,因此想到了从.net中借用此控件。 首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.NET库中的System.Windows.Forms,另外一个是WindowsFormsIntegration。组件不好找,排一下序就比较容易了。

    添加完两个动态dll以后,就可以在控件库中找到WindowsFormsHost这个控件了。这个控件是我们添加Windows Form控件的基础。跟别的其他的控件一样,它也是可控的,可以自定义它在窗口中的位置、控件大小颜色等属性。 将这个控件放入窗体,放置完以后在xmal代码中会自动生成相应代码: 然后,需要在xmal的开始处添加两行代码 xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=W indowsFormsIntegration" xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Wi ndows.Forms"

    相关文档
    最新文档