我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C# 中怎么创建一个复合控件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C# 中怎么创建一个复合控件

本篇文章为大家展示了C# 中怎么创建一个复合控件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

构建提供丰富的客户端接口的复杂Web控件经常需要把一些客户端JavaScript代码与控件的服务器端代码集成到一起。然而,在一些情况下,为了达到某种巧妙的效果而把问题搞得过于复杂经常会破坏控件的内部服务器代码与生成的客户端HTML代码之间的数据同步,而当进行页面回寄时这将成为一个问题。在本文中,我将首先构建两个“很酷”的Web控件(都极容易导致这一问题),然后向你展示如何来修改这一“脆弱性”。

当前,HTML仍然保持为Web应用程序生成阶段的主要语言。遗憾的是,它所使用的协议是无状态的,所以必须由Web开发者自己来处理这种无状态特点。通过使用一些架构特征,例如回寄机制和ViewState变量,ASP.NET有助于处理这个问题。然而,为了实现某些功能,还需要再作努力,从而借助于回寄事件把Web页面不断向服务器发出请求的各种技术结合起来。

具体地说,我将分析如何使用JavaScript和DHTML存取在客户端生成的元素。其实,把客户端和服务器功能融合到一起要求使用大量的技巧才能达到***用户体验效果,而微软在其ASP.NET校验控件中就实现了这一点。为了提供一种丰富的客户端校验效果,该控件中使用了大量的JavaScript。

作者注:本文假定你对定制Web控件开发有一个基本了解。因此,我将不再重复Web控件开发的基础内容,例如属性工作原理与风格的添加方式

下面,我想向你展示如何构建一组很酷的控件,它们具有你在商业控件中才能看到的优秀功能。稍后,我将继续展示定制Web控件带给Web编程的完全封装优点。既然你已经了解如何开发定制Web控件,那么你应该知道的一个概念是封装一个控件所有的功能和行为(就象你在一个标准业务对象中所实现的那样)。在学习构建具有复杂行为的控件时,这种封装将极有用处。

在***个控件中,我将向你展示如何构建一个称为EnhancedListBox的控件。这个控件将扩展ASP.NET的ListBox控件—添加一个头部和一些重排序按钮。注意,这是一个直接继承自常规ListBox的控件。
之后,我还将向你展示如何创建一个C# 复合控件—ListMover,它将包含两个上面提到的EnhancedListBox控件。这个ListMover控件还包含一些允许你从一个列表到另一个列表中移动项的按钮。

其实,用常规方法(非面向Web控件的)来实现这种ASP.NET功能也并不困难。首先,你要把一个常规ListBox控件拖动到你的Web表单上并且使用一些数据填充它。

然后,再添加一个标签用作标题,还有一组按钮用作重排序按钮。捕获这些按钮的服务器端事件是ASP.NET中的标准操作;因此,你只需要使用一种方法来取得当前选定的项并且根据用户点击的按钮从而把它放到该列表中的更高或更低的位置即可。例如,你可能编写如下的代码实现移动列表中的一项。

i_Index = ListBox1.SelectedIndex;  o_Item = ListBox1.SelectedItem;  ListBox1.Items.RemoveAt(this.SelectedIndex);  i_Index--;  if(i_Index < 0) i_Index = 0;  ListBox1.Items.Insert(i_Index, o_Item);

下面,让我进行简单的分析。首先,我保存了当前的列表中选定项的索引值与当前项。然后,我在当前位置删除该项;之后,在一个较低位置(上一个索引值减1)重新插入该项。这里的逻辑非常简单,那么为什么我还要说明这个问题呢?

借助于这种常规的ASP.NET编程方法,Web表单上面的重排序按钮将会引发一个实现ListBox中重排序的服务器端事件。这是由一个到服务器的回寄触发的;因此,这个回寄可能是一次“繁重的”往返,具体要信赖于表单上的具体内容及因特网速度。

然而,因为这一代码实现的是一个标准ASP.NET回寄过程,所以由ASP.NET使用它的ViewState机制来负责状态处理。当再次生成页面时,列表框内容按要求的顺序正确生成。

当然,你也可以使用与此相同的常规方式在ListMover控件中重新创建这个功能。篇幅所限,我在此省略,只好留待读者您来实现。这个Web表单上包含一对ListBox,还有一些指示从左向右或从右向左移动的按钮。这些按钮的服务器端事件将从一个ListBox中提取选择的项,然后把它添加到另一个列表中;反之亦然。如在刚才的例子中所展示的,ViewState在此能够完好工作以保持这两个ListBox中的项。

上述内容就是C# 中怎么创建一个复合控件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C# 中怎么创建一个复合控件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C# 中怎么创建一个复合控件

本篇文章为大家展示了C# 中怎么创建一个复合控件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。构建提供丰富的客户端接口的复杂Web控件经常需要把一些客户端JavaScript代码与控件的服务器端代码
2023-06-17

Python中怎么创建一个Silverlight控件

这篇文章给大家介绍Python中怎么创建一个Silverlight控件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。XAML文件app.xaml< Canvas xmlns="http://schemas.micros
2023-06-17

C#中怎么创建一个Excel文件

这篇文章给大家介绍C#中怎么创建一个Excel文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#创建Excel文件实现实例://创建一个excel application Excel.Application xl
2023-06-17

C#中怎么创建一个文件夹

本篇文章为大家展示了C#中怎么创建一个文件夹,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#创建文件夹在不同虚拟目录下的实现方法是用Server.MapPath("相对路径").相对路径根据不同情
2023-06-17

VB.NET中怎么创建一个控件数组

VB.NET中怎么创建一个控件数组,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在VB.NET创建控件数组首先创建一个Button类型控件数组:1、创建“Win
2023-06-17

ASP.NET中怎么实现一个复合控件

这篇文章给大家介绍ASP.NET中怎么实现一个复合控件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。ASP.NET复合控件的呈现引擎在深入探讨 ASP.NET 2.0 编码技术之前,让我们回顾一下复合控件的内部例行过程
2023-06-18

全C#中怎么创建一个XML文件

今天就跟大家聊聊有关全C#中怎么创建一个XML文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#创建XML文件的相关概念:这篇文章假定读者具备一定的XML基础,如果你刚接触XML
2023-06-17

C#中怎么创建一个表单

这期内容当中小编将会给大家带来有关C#中怎么创建一个表单,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#创建表单这非常简单,只需要创建一个从 System.WinForms.Form 类中衍生出来的类,
2023-06-17

C#中怎么创建一个Access表

本篇文章给大家分享的是有关C#中怎么创建一个Access表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#操作Access主要知识点如下:using System.Data.
2023-06-18

c++怎么创建一个类

在C++中,可以通过以下步骤来创建一个类:1. 声明类:在头文件(.h或.hpp)中声明类的名称和成员函数。例如:```cppclass MyClass {// 成员变量private:int myInt;// 成员函数public:voi
2023-08-16

C#中怎么创建一个DataSet对象

C#中怎么创建一个DataSet对象,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 启动 Microsoft Visual Studio .NET。在文件菜单上,单击新
2023-06-17

C#中怎么创建一个Word文档

C#中怎么创建一个Word文档,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#创建Word文档实例:using MSExcel = Microsoft.Office.Inte
2023-06-17

C#中怎么创建一个XML文档

本篇文章为大家展示了C#中怎么创建一个XML文档,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.创建一个XML文档:这一点和***种方法一样,在这里就不介绍了。2.通过"XmlDocument"类
2023-06-17

C#中怎么创建一个Service模板

C#中怎么创建一个Service模板,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。打开VS 2005,点击File->New->Project…,在C#创建工程向导中选择W
2023-06-17

C#复合控件怎么开发

本篇内容介绍了“C#复合控件怎么开发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!当我们在.NET平台下做Windows Forms开发时,
2023-06-17

C#中如何创建一个Excel文件

这篇文章给大家介绍C#中如何创建一个Excel文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#创建Excel文件实例操作:private void Button2_Click(object sender, Sys
2023-06-17

怎么在vue中创建一个组件

今天就跟大家聊聊有关怎么在vue中创建一个组件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。方法一:使用 Vue.extend 来创建全局的Vue组件实例:var com1 = Vu
2023-06-14

C#中怎么动态创建一个数组

这期内容当中小编将会给大家带来有关C#中怎么动态创建一个数组,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#动态创建数组实例:ArrayList al = new ArrayList(); al.A
2023-06-17

C#中怎么创建一个类库工程

这篇文章将为大家详细讲解有关C#中怎么创建一个类库工程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#语言有很多值得学习的地方,这里我们主要介绍C#类库工程,包括介绍使用对象浏览器浏览两个
2023-06-17

C#中怎么创建一个Web Service服务

本篇文章为大家展示了C#中怎么创建一个Web Service服务,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。为什么需要Web Service?以前,分布式的应用程序逻辑需要使用分布式的对象模型,通
2023-06-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录