关闭

关闭

关闭

封号提示

内容

首页 C#网络应用编程基础 教学课件 ppt 作者 马骏2 第10章 基于组件的开发技术.ppt

C#网络应用编程基础 教学课件 ppt 作者 马骏2 第10章 基于组件的开发技术.ppt.ppt

C#网络应用编程基础 教学课件 ppt 作者 马骏2 第10…

希望
2019-09-15 0人阅读 举报 0 0 暂无简介

简介:本文档为《C#网络应用编程基础 教学课件 ppt 作者 马骏2 第10章 基于组件的开发技术.pptppt》,可适用于高等教育领域

吉林快3—吉林快三高等教育频道提供C#网络应用编程基础 教学课件 ppt 作者 马骏2 第10章 基于组件的开发技术.ppt.ppt文档免费下载,数万用户每天上传大量最新资料,数量累计超一个亿!

*第章基于组件的开发技术组件和控件组件的设计用户控件自定义控件扩展控件*组件和控件组件在NETFramework中组件是指实现SystemComponentModelIComponent接口的类或从实现IComponent的类中直接或间接派生的类。在软件开发中组件是指可重复使用并且可以和其它对象进行交互的对象。*控件控件是提供或实现用户界面功能的组件。NETFramework为控件提供两个基类:◆SystemWindowsFormsControl◆SystemWebUIControl*特性在NET框架中特性(Attribute)是一种标记用于提供属性或方法的一些信息。*特性声明在方括号中在属性声明的上方可以直接声明特性。例如:默认值DefaultValue()属性窗口底部的描述以及其所在分组的分类名称Description(校验错误时的提示文本信息。),Category(验证)publicstringErrorMessage{get{}set{}}*组件的设计【例】简单组件设计。)在VS中选择【新建项目】在【项目类型】中选择【VisualC#项目】在【模板】中选择【类库】输入文件名TestComponent选择相应保存路径完成上述操作后单击【确定】进入代码编辑窗口。)将源代码改为如下内容。usingSystemusingSystemCollectionsGenericusingSystemTextusingSystemDatausingSystemDataSqlClientnamespaceTestComponent{publicclassMyDataBase*{返回表中记录数publicintGetRecordCount(stringconnString,stringtableName){intnumber=SqlConnectionconn=newSqlConnection(connString)SqlCommandcommand=newSqlCommand(selectcount(*)fromtableName,conn)try{connOpen()number=(int)commandExecuteScalar()connClose()}catch(Exceptionerr){thrownewException(errMessage)}returnnumber}*根据Select语句自动生成其他SQL语句publicvoidBuildAdapter(refSqlDataAdapteradapter){SqlCommandBuilderbuilder=newSqlCommandBuilder(adapter)adapterDeleteCommand=builderGetDeleteCommand()adapterInsertCommand=builderGetInsertCommand()adapterUpdateCommand=builderGetUpdateCommand()}}}*在Windows应用程序中调用设计的组件【例】Windows应用程序中组件调用*publicForm(){InitializeComponent()stringconnString=PropertiesSettingsDefaultMyDatabaseConnectionStringTestComponentMyDataBaseme=newTestComponentMyDataBase()labelText=总记录数:meGetRecordCount(connString,MyTable)SqlConnectionconn=newSqlConnection(connString)SqlDataAdapteradapter=newSqlDataAdapter(select*fromMyTable,conn)meBuildAdapter(refadapter)DataSetds=newDataSet()adapterFill(ds,MyTable)dataGridViewDataSource=dsTablesMyTable}*用户控件控件提供了一种创建和重用自定义图形界面的方法,它本质上是具有可视化表示形式的组件。控件有用户控件、扩展控件和自定义控件三种形式。对于Windows窗体用户控件默认继承自SystemWindowsFormsUserControl。Windows用户控件包含一个或多个Windows窗体控件、组件或代码块它们能够通过验证用户输入、修改显示属性或执行自定义的其它任务来扩展功能。*【例】设计一个Windows用户控件该用户控件在Windows应用程序中完成与Web服务器控件RegularExpressionVlidator相似的验证功能。其中有一个文本框验证控件和一个标签控件。该控件自定义三个供公开使用的属性:RegexText、ErrorMessage和ValidationExpression。用户可以验证该控件的输入值RegexText是否匹配正则表达式指定的模式ValidationExpression。用户控件(续)*usingSystemusingSystemCollectionsGenericusingSystemComponentModelusingSystemDrawingusingSystemDatausingSystemTextusingSystemWindowsFormsusingSystemTextRegularExpressionsnamespaceRegexValidator{publicpartialclassRegexValidator:UserControl{privatestringvalidationExpression属性RegexText的定义归类到ldquo验证rdquo分组Description(与控件关联的文本信息。),Category(验证)publicstringRegexText{*get{returntextBoxRegexText}set{textBoxRegexText=value}}属性ErrorMessage的定义归类到ldquo验证rdquo分组Description(校验错误时的文本提示信息。),Category(验证)publicstringErrorMessage{get{returnlabelRegexText}set{labelRegexText=value}}*属性ValidationExpression的定义归类到ldquo验证rdquo分组DefaultValue()Description(指定验证时的正则表达式。),Category(验证)publicstringValidationExpression{get{returnvalidationExpression}set{try{Regexr=newRegex(value)validationExpression=value}catch{MessageBoxShow(this,正则表达式语法错误!,错误,MessageBoxButtonsOK,MessageBoxIconWarning)validationExpression=}}}*当焦点从文本框离开时执行的验证操作privatevoidtextBoxRegexLeave(objectsender,EventArgse){labelRegexVisible=!RegexIsMatch(textBoxRegexText,validationExpression)if(labelRegexVisible){MessageBoxShow(请按要求输入,,MessageBoxButtonsOK,MessageBoxIconHand)textBoxRegexFocus()}else{MessageBoxShow(注册验证成功,,MessageBoxButtonsOK,MessageBoxIconWarning)}}*自定义控件(续)【例】创建自定义控件CustomButton使用DrawButton方法来绘制用户界面单击此控件则在原始控件的边界内绘制一个较小的CustomButton按钮以此来完成类似于Button按钮的视觉效果。*privateRectangleclickRectangleValue=newRectangle()指定用视觉样式绘制的按钮的视觉状态privatePushButtonStatestate=PushButtonStateNormal定义单击按钮后的小按钮矩形边界publicRectangleClickRectangle{get{clickRectangleValueX=ClientRectangleX(int)(*ClientRectangleWidth)clickRectangleValueY=ClientRectangleY(int)(*ClientRectangleHeight)clickRectangleValueWidth=ClientRectangleWidth(int)(*ClientRectangleWidth)clickRectangleValueHeight=ClientRectangleHeight(int)(*ClientRectangleHeight)returnclickRectangleValue}}*protectedoverridevoidOnPaint(PaintEventArgspe){baseOnPaint(pe)如果按钮被按下去则绘制小的按钮图形界面if(state==PushButtonStatePressed){ButtonRendererDrawParentBackground(peGraphics,ClientRectangle,this)ButtonRendererDrawButton(peGraphics,ClickRectangle,thisText,thisFont,true,state)}绘制大的未被按下去的按钮图形界面else{ButtonRendererDrawButton(peGraphics,ClientRectangle,thisText,thisFont,false,state)}}*protectedoverridevoidOnMouseDown(MouseEventArgse){baseOnMouseDown(e)设置按钮视觉状态为按下状态state=PushButtonStatePressedInvalidate()}protectedoverridevoidOnMouseEnter(EventArgse){baseOnMouseEnter(e)设置按钮状态为激活状态state=PushButtonStateHotInvalidate()}protectedoverridevoidOnMouseLeave(EventArgse){baseOnMouseLeave(e)state=PushButtonStateNormalInvalidate()}*protectedoverridevoidOnMouseUp(MouseEventArgse){baseOnMouseUp(e)OnMouseEnter(e)}protectedoverridevoidOnMouseMove(MouseEventArgse){baseOnMouseMove(e)鼠标左键按下并且光标从按下的按钮上离开时恢复按钮的正常外观。if((eButtonMouseButtonsLeft)==MouseButtonsLeft!ClientRectangleContains(eLocation)state==PushButtonStatePressed){OnMouseLeave(e)}}*调用Windows自定义控件【例】调用自定义控件示例。*扩展控件扩展控件是指从任何现有的Windows窗体控件或者自定义控件导出继承控件。实际上扩展控件是一种继承的自定义控件。设计扩展控件【例】创建扩展控件EllipseButton它从例的CustomButton按钮继承而来但是为其图形用户界面添加了自定义外观。*privatePushButtonStatestate=PushButtonStateNormalprivateRectanglerect=newRectangle()privateColorstartColor=ColorWhite渐变起始色privateColorendColor=ColorRed渐变终止色Description(设定渐变的起始色),Category(Appearance)publicColorStartColor{get{returnstartColor}set{startColor=valueOnPaint(newPaintEventArgs(thisCreateGraphics(),ClientRectangle))}}*Description(设定渐变的终止色),Category(Appearance)publicColorEndColor{get{returnendColor}set{endColor=valueOnPaint(newPaintEventArgs(thisCreateGraphics(),ClientRectangle))}}*重写OnPaint方法将按钮图形界面定义为背景线性渐变的椭圆。protectedoverridevoidOnPaint(PaintEventArgspe){baseOnPaint(pe)消除锯齿peGraphicsSmoothingMode=SmoothingModeAntiAliaspeGraphicsClear(thisBackColor)选择绘制控件界面的矩形大小其中ClickRectangle从CustomButton继承而来rect=(state==PushButtonStatePressed)thisClickRectangle:thisClientRectangleLinearGradientBrushmyBrush=newLinearGradientBrush(rect,StartColor,EndColor,LinearGradientModeForwardDiagonal)*变为小按钮后原按钮的一部分将显现出来需要调用DrawParentBackground方法重新绘制使其变为父级的背景。ButtonRendererDrawParentBackground(peGraphics,ClientRectangle,this)peGraphicsFillEllipse(myBrush,rect)myBrushDispose()StringFormatalignFormat=newStringFormat()alignFormatLineAlignment=StringAlignmentCenteralignFormatAlignment=StringAlignmentCenterpeGraphicsDrawString(thisText,thisFont,newSolidBrush(thisForeColor),rect,alignFormat)}*protectedoverridevoidOnMouseDown(MouseEventArgse){baseOnMouseDown(e)设置按钮视觉状态为按下状态state=PushButtonStatePressedInvalidate()}protectedoverridevoidOnMouseEnter(EventArgse){baseOnMouseEnter(e)设置按钮状态为激活状态state=PushButtonStateHotInvalidate()}protectedoverridevoidOnMouseLeave(EventArgse){baseOnMouseLeave(e)state=PushButtonStateNormalInvalidate()}*protectedoverridevoidOnMouseUp(MouseEventArgse){baseOnMouseUp(e)OnMouseEnter(e)}protectedoverridevoidOnMouseMove(MouseEventArgse){baseOnMouseMove(e)鼠标左键按下并且光标从按下的按钮上离开时恢复按钮的正常外观。if((eButtonMouseButtonsLeft)==MouseButtonsLeft!ClientRectangleContains(eLocation)state==PushButtonStatePressed){OnMouseLeave(e)}}*protectedoverridevoidOnTextChanged(EventArgse){OnPaint(newPaintEventArgs(thisCreateGraphics(),ClientRectangle))}*调用扩展控件【例】调用扩展控件示例。

类似资料

该用户的其他资料

2015.11创新杯创新杯说课大赛国赛说课课件.ppt

19--课程..创新杯说课大赛国赛说课课件.ppt

2014创新杯直线的倾斜角与斜率课程创新杯说课大赛国赛说课课件.ppt

13幼师3 住创新杯说课大赛国赛说课课件.ppt

2010血栓的形成讲课曹颜冬创新杯说课大赛国赛说课课件.ppt

职业精品

精彩专题

让你惊艳又清新的英文短诗合集

让你清新惊艳的英文小诗有哪些呢?小编汇集了以下经典英文诗、唯美爱情小诗、英文诗押韵技巧等等,让爱好英文短诗的你能够一起体验其中的乐趣!

用户评论

0/200
上传我的资料

热门资料排行换一换

  • 英文毕业论文 从女性主义的角度分…

  • 某工程热力管道施工组织设计_sec…

  • AFP资格认证教学与考试大纲(20…

  • 贾题韬老师坛经的智慧

  • 计算机应用基础(本)

  • 一、检测技术基础知识

  • 室内设计风水学

  • MATLAB常用函数参考

  • 7月女装精选

  • 资料评价:

    / 31
    所需积分:0 立即下载

    VIP

    在线
    客服

    免费
    邮箱

    吉林快3—吉林快三服务号

    扫描关注领取更多福利