cs架构的需要加载什么控件吗,

cs架构的需要加载什么控件吗,,第1张

vb或vc等语言开发,比如最常用的oicq就是。而b/s代表的是服务器端由web服务器发放,客户端由浏览器接收的系统,它的前台是html语言,由浏览器解释。b/s结构可以由web服务器能够解释的脚本语言如asp,php或jsp等编写,也可以由vb,vc或perl等语言写成cgi形式。严格来说,b/s结构也是一种c/s结构。

如果只是要实现点击下按钮的话应该可以

你可以遍历所有控件,然后判断是INPUT,判断是BUTTON类型,然后判断ID(通过网站源代码看)是不是这个按钮的,然后就check()就可以了。

C/C++ code

MSHTML::IHTMLElementCollection objAllElement=NULL;

MSHTML::IHTMLDocument2 objDocument=NULL;

CString strUrl,strTemp;

strUrl=m_ctrlWebGetLocationURL();//得到当前网页的URL

if(strUrlIsEmpty())

return;

objDocument=(MSHTML::IHTMLDocument2 )m_ctrlWebGetDocument(); //由控件得到IHTMLDocument2接口指针

objDocument->get_all(&objAllElement); //得到网页所有元素的集合

//由于所有页面下载完后都会执行这个函数,所以必须根据URL判断消息来源网页

if(strUrl=="http://regemail163com/mailregAll/reg0jspfrom=163mail_right" )

{

CComPtr<IDispatch>pDisp;

long lcount = 0;

objAllElement->get_length(&lcount);

for(int i=0;i<lcount;i++)

{

_variant_t index;

indexvt=VT_I4;

indexintVal=i;

IDispatchPtr disp;

disp=objAllElement->item(index,index);

if(disp==NULL)

continue;

else

{

MSHTML::IHTMLInputElementPtr pInput(disp);

if(pInput)

{

BSTR bstrtype;

pInput->get_type(&bstrtype);

//printf(_bstr_t(bstrtype));

if(StrCmpW(bstrtype,L"button")==0)

{

MSHTML:ispHTMLButtonElementPtr pElement(disp);

// pElement=pDisp;

if(pElement)

{

_bstr_t strname=pElement->GetclassName();//>onclick;

if(StrCmpW(strname,L"百度一下")==0)

{

pElement->click();

}

}

}

SysFreeString(bstrtype);

}

}

}

objAllElement->Release();

}

asp net的控件分为内置和外置两种。asp net的内置控件分为两种:HTML 控件 (HTML control)和用户控件 (User control)。外置控件,在使用前,需要将其添加到Visual Studio NET环境中。然后就可以通过启动一个新项目来使用新的控件。 虽然有的时候,控件在开发机器上运行正常,但当程序被部署到终端用户机器上时,会出现问题。因为很多终端机器不允许安装外置控件,对于上述问题有简单实用的解决办法-“在服务器上部署 “fp_client” 文件夹”。

fp_client 文件夹包含所有ASPNET外置控件需要的脚本文件。 拿Spread控件为例,Web 页面上的 Spread 控件实例从服务器上的 fp_client 文件夹中读取前台格式化、样式和脚本功能。  fp_client 文件夹的默认安装路径是:C:\Program Files\GrapeCity\SpreadASP5dotNet20\v502015\fp_client\fpspread\5_0_2015_2008\HTC

我们需要在 webconfig 文件中添加以下代码 fp_client 文件夹进行正确的加载: <appSettings><addkey=fp_clientvalue=fp_client/></appSettings>下面是两个有助于我们更加深入的去解决该问题问题的相关点:  1上面的标签仅在你想要从程序根目录下载“fp_client”文件夹是需要 ,在这种情况下,你需要复制 fp_client 文件夹并且把它粘帖到程序的根目录下,或者创建一个映射到 fp_client 文件夹的虚拟路径。  2在服务器上有很多网址运行 Spread for ASPNET,我们仅需要把 fp_client 文件夹 复制到服务器的根目录上即可(而不是程序的根目录)。在这种情形下, 上述 webconfig 标签是不需要添加的,程序仍然可以完美运行。 1、ClientIDMode

渲染ASP NET控件时会自动生成一个ID,当在客户端脚本中引用它们时,却会制造不少麻烦,虽然它是命名容器和ID的简单串联,但仍然无法预测生成的ID范围

ASP NET 40使用ClientIDMode属性解决了这个问题,它允许控制生成这些ID的方法,ClientIDMode有四个可选择的值:AutoID,Static,Predictable和Inherit下面是这四个值的含义解释:

AutoID – 和40以前的版本保持一致,自动生成ID

Static – 指定ID的值,在渲染控件时不会发生变化

Predictable – 指定后缀,然后和容器控件的ID属性进行合并

Inherit – 继承父控件的设置

注意,Page的默认ClientIDMode属性的值是AutoID,可以通过@ Page指令设置页面级的值,还可以通过修改Web配置文件设置应用程序级的值

[pre]

<systemweb>

<pages clientIDMode=Predictable></pages> </systemweb>

[/pre]

2、Meta关键字和Meta描述

在ASP NET 40中Page类增加了两个新的属性:Meta Keywords和Meta Description,可以在运行时设置这两个属性,通过数据库或其它源驱动,并允许动态设置标签,描述特定的页面,下面的Page标签显示了这两个属性 [pre]<%@PageLanguage=C#AutoEventWireup=trueKeywords=keyword1,keyword2Description=mydescription%>C#AutoEventWireup=trueKeywords=keyword1,keyword2Description=mydescription%>C#AutoEventWireup=trueKeywords=keyword1,keyword2Description=mydescription%>[/pre]3、数据绑定控件中的行持久性选择

ASP NET数据绑定控件,如Grid View,都支持行选择,但它们应该选择每个页面上相同编号的行,但ASP NET 40以前的版本中,行持久性选择是不能实现的,因为以前的版本选择后续页面上的行时是基于行索引的,ASP NET 40提供了一个直观的方法解决了这一问题

数据绑定控件现在提供了一个EnablePersistedSection属性,它可以帮助实现行持久性选择。

4、AutoEventWireup

AutoEventWireup是很少使用但知名度很高的一个ASP NET属性,简单地说,它设置为True时,在未明确委派的情况下,允许自动调用页面事件。

它的默认值是True,AutoEventWireup属性的缺点在MSDN上有详细描述:它限制了命名事件处理程序的灵活性,另一个缺点是对性能的不利影响,对于高流量的网站,性能影响是巨大的

5、Page的Header属性

Page类现在提供了Header属性,可以在运行时绑定它,下面的代码示例显示了如何明确设置Title属性

thisHeaderTitle = My page title;

当根据某个规则动态关联一个样式表时,这个属性非常方便,在这种情况下,打印页面是理想的候选 [pre]HtmlLinkprintLink=newHtmlLink();printLinkAttributesAdd(type,text/css);printLinkAttributesAdd(rel,stylesheet);printLinkAttributesAdd(href,css/printcss);thisHeaderControlsAdd(printLink);[/pre]6、AssociatedControlID属性

可以在一个Web表单中将一个控件关联到另一个服务器控件,这时需要使用服务器控件的AssociatedControlID属性,当根据某些行为为关联的控件设置热键时,这个属性就可以派上用场了

AssociatedControlID属性的默认值是一个空字符串,它表示控件未与任何服务器控件关联,下面的代码显示了一个Textbox控件是如何与Label服务器控件关联的

7、ControlState属性

ASP NET最重要的状态管理技术是ViewState,它允许你在往返Web服务器的路上保留值,但由于可在父级关闭,它并不是保存信息可靠的方法

ASP NET 20为服务器控件引入了私有的ViewState,叫做ControlState,它可用来存储控件的关键信息,ASP NET可以处理它的序列化和反序列化

注意,使用时必须谨慎,因为它会影响页面的性能

8、ControlPreserveProperty

针对传统的视图状态用法,Rick Strahl为我们提供了另一个选择:PreservedProperties,它可以保存控件ID和属性名称,详细信息请参考Implementing an ASP NET PreserveProperty Control(实现ASP NET PreserveProperty控件)

9、PreviousPageType指令

PreviousPageType指令是ASP NET 20跨页面回送机制的一部分,允许指定来源页面的虚拟路径,以便强类型访问来源页面正常情况下,发送的数据可通过PreviousPage属性和FindControl方法访问,但使用强类型的PreviousPageType指令允许你访问公共属性,而不需要调用FindControl方法

这首先要看控件所在的Form类有没有实例化,若已经实例化,可以通过构造传参或委托的方式完成。

构造传参:将控件所在的Form类实例化对象作为参数传到你new的新Form中。

C#实现根据指定容器和控件名字获得控件的方法,在进行C#应用程序设计时有一定的借鉴价值。分享给大家供大家参考借鉴。具体实现方法如下:

功能代码如下:

1、/// <summary>

2、/// 根据指定容器和控件名字,获得控件

3、/// </summary>

4、/// <param name="obj">容器</param>

5、/// <param name="strControlName">控件名字</param>

6、/// <returns>控件</returns>

7、private object GetControlInstance(object obj,string strControlName)

8、{

9、IEnumerator Controls = null;//所有控件

10、Control c = null;//当前控件

11、Object cResult=null;//查找结果

12、if(objGetType() == thisGetType())//窗体

13、{

14、Controls = thisControlsGetEnumerator();

15、}

16、else//控件

17、{

18、Controls = ((Control)obj)ControlsGetEnumerator();

19、}

20、while(ControlsMoveNext())//遍历操作

21、{

22、c = (Control)ControlsCurrent;//当前控件

23、if(cHasChildren)//当前控件是个容器

24、{

25、cResult = GetControlInstance(c,strControlName);//递归查找

26、if(cResult==null)//当前容器中没有,跳出,继续查找

27、continue;

28、else//找到控件,返回

29、return cResult;

30}

31、else if(cName == strControlName)//不是容器,同时找到控件,返回

32、{

33、return c;

34、}

35、}

36、return null;//控件不存在

37、}

示例如下:

((Button) GetControlInstance(this,"button7"))BackColor = ColorRed;

((Button) GetControlInstance(thisgroupBox4,"button7"))PerformClick();

C#是微软公司发布的一种面向对象的、运行于NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 NET windows网络框架的主角。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为NET开发的首选语言。

C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT NET平台的应用程序,MICROSOFT NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。

C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。

c#打印控件的使用是如何的呢?我们在编写C#打印控件实用程序的时候怎么操作呢?首先弄一个printDocument控件,然后在打印的按钮中直接调用printDocument1print()事件 再次就是写printDocument的PrintPag事件了 下面C#打印控件的使用具体实例:

//C#打印控件的使用实例 private void button1_Click(object sender, EventArgs e) { printDocument1Print(); } private void printDocument1_PrintPage(object sender, SystemDrawingPrintingPrintPageEventArgs e) { Font tabelTextFont = new Font("宋体", 10); if (dataGridView1DataBindings != null) { int[] columnsWidth = new int[dataGridView1ColumnsCount]; //C#打印控件的使用之得到所有列的个数 int[] columnsLeft=new int[dataGridView1ColumnsCount]; //for (int c = 0; c < columnsWidthLength; c++) //C#打印控件的使用之得到列标题的宽度 { columnsWidth[c] = (int)eGraphicsMeasureString( dataGridView1Columns[c]HeaderText , tabelTextFont)Width; } for (int rowIndex = 0; rowIndex < dataGridView1RowsCount; rowIndex++) //C#打印控件的使用之rowindex当前行 { for (int columnIndex = 0; columnIndex < dataGridView1ColumnsCount; columnIndex++) //C#打印控件的使用之当前列 { int w = (int)eGraphicsMeasureString( dataGridView1Columns[columnIndex]Name , tabelTextFont)Width; columnsWidth[columnIndex] = w > columnsWidth[columnIndex] w : columnsWidth[columnIndex]; } }//C#打印控件的使用 int rowHidth = 20; int tableLeft=60; int tableTop=70; columnsLeft[0]=tableLeft; for (int i=1;i<=columnsWidthLength -1;i++) { columnsLeft[i] = columnsLeft[i - 1] + columnsWidth[i - 1]+15; } StringFormat sf=new StringFormat (); sfAlignment=StringAlignmentCenter ;//居中打印 eGraphicsDrawString("欢迎石印死了开的交流!", new Font("宋体", 15), BrushesBlack, new Point( ePageBoundsWidth / 2, 20),sf );//打印标题 for (int c = 0; c < columnsWidthLength; c++) //打印表中的列名 { eGraphicsDrawString(dataGridView1Columns[c]HeaderText, new Font ("宋体",10,FontStyleBold), BrushesBlack, new Point(columnsLeft[c], tableTop)); eGraphicsDrawLine(PensBlack, new Point(columnsLeft[c]-5, tableTop - 5), new Point(columnsLeft[c]-5, tableTop + (dataGridView1 Rows Count+1)rowHidth)); }//C#打印控件的使用 eGraphicsDrawLine(PensBlack, new Point(columnsLeft[dataGridView1ColumnsCount - 1] + columnsWidth[dataGridView1ColumnsCount - 1], tableTop - 5), new Point(columnsLeft[dataGridView1ColumnsCount - 1] + columnsWidth[dataGridView1ColumnsCount - 1], tableTop + (dataGridView1RowsCount + 1) rowHidth)); //画最后面的线 eGraphicsDrawLine(PensBlack, new Point(columnsLeft[0] - 5, tableTop - 5), new Point(columnsLeft[dataGridView1ColumnsCount - 1] + columnsWidth[dataGridView1ColumnsCount - 1], tableTop - 5)); for (int rowIndex = 0; rowIndex < dataGridView1RowsCount; rowIndex++)//打印表中的内容 { for (int columnIndex = 0; columnIndex < dataGridView1ColumnsCount; columnIndex++) { eGraphicsDrawString( dataGridView1Rows[rowIndex]Cells[columnIndex]ValueToString(), tabelTextFont, BrushesBlack, new Point(columnsLeft[columnIndex], tableTop + rowHidth (rowIndex + 1))); } eGraphicsDrawLine(PensBlack, new Point(columnsLeft[0]-5, tableTop + (rowIndex +1) rowHidth-5), new Point(columnsLeft[dataGridView1ColumnsCount - 1] + columnsWidth[dataGridView1ColumnsCount - 1], tableTop + (rowIndex +1)rowHidth-5));//循环画行 } //C#打印控件的使用之 }

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » cs架构的需要加载什么控件吗,

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情