飘灵儿 发表于 2015-1-16 22:23:38

ASP.NET网页编程之Asp.net2.0之自界说控件ImageButton

c++是语言,其实C++和java的应用范围根本就不一样的。在java应用的领域内,c++是不合适的。所以微软才搞了C#和Java对抗。上个礼拜三入手下手学自界说控件,做了很多实习。花了一上中午间写了一个imageButton,之前就像写这个控件,只是不会。图片

注释
这个控件仿照winform中的button,能够撑持图片和笔墨。能够选择实行服务器端程序仍是客户端程序,另有一些复杂的设置。
不敷的是不撑持款式,下次但愿能够写一个工具条。
以下就是代码
以下为援用的内容:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web.UI.WebControls;
usingSystem.ComponentModel;
usingSystem.Web.UI;
usingSystem.Drawing.Design;
usingSystem.Drawing.Drawing2D;
namespaceClassLibrary1
{

publicclassPicture
{

privateUnitheight=16;

privatestringsrc=string.Empty;



publicstringSrc
{
get{returnthis.src;}
set{this.src=value;}
}


publicUnitHeight
{
get{returnheight;}
set{height=value;}
}
privateUnitwidth=16;


publicUnitWidth
{
get{returnwidth;}
set{width=value;}
}

publicenumAlign{Left,Right}

}

publicclassLabel
{


privatestringtext=string.Empty;

publicstringText
{
get{returntext;}
set{text=value;}
}
privateSystem.Drawing.FontfontFamily=newSystem.Drawing.Font("宋体",8);



publicSystem.Drawing.FontFont
{
get{returnthis.fontFamily;}
set{this.fontFamily=value;}
}

}


publicclassImageButton:Control,INamingContainer,IPostBackEventHandler
{
publicenumRaiseEventType{Client,Server}
privatePicturepic=newPicture();
privatePicture.AlignpicAlign=Picture.Align.Left;
privateLabellabel=newLabel();
privatestringjsFunction=string.Empty;
privatestaticreadonlyobjectclickKey=newobject();
publicenumTextAlign{Left,Center,Right}

publicstringJSFunction
{
get{returnthis.jsFunction;}
set{this.jsFunction=value;}
}

privateRaiseEventTyperaiseEvent=RaiseEventType.Server;

publicRaiseEventTypeRaiseEvent
{
get{returnthis.raiseEvent;}
set{this.raiseEvent=value;}
}


privateTextAlignalign=TextAlign.Left;

publicTextAlignALign
{
get{returnalign;}
set{align=value;}

}
privateUnitwidth=80;


publicUnitWidth
{
get{returnthis.width;}
set{this.width=value;}
}



publiceventEventHandlerOnClick
{
add
{
Events.AddHandler(clickKey,value);
}
remove
{
Events.RemoveHandler(clickKey,value);
}
}

publicPicture.AlignPicAlign
{
get{returnpicAlign;}
set{picAlign=value;}
}





publicPicturePic
{
get{returnpic;}

}




publicLabelLabel
{
get{returnlabel;}

}
protectedoverridevoidRender(HtmlTextWriterwriter)
{
if(raiseEvent==RaiseEventType.Server)
{
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.GetPostBackEventReference(this,this.ClientID));
}
else
{
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,"javascript:"+this.jsFunction);
}

writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor,"hand");
writer.AddStyleAttribute(HtmlTextWriterStyle.Width,this.width.Value.ToString()+"px");
if(align==TextAlign.Left)
{
writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign,"left");
}
elseif(align==TextAlign.Center)
{
writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign,"center");
}
else
{
writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign,"right");
}

writer.RenderBeginTag(HtmlTextWriterTag.Div);


if(PicAlign==Picture.Align.Left)
{
AddPic(writer);
AddLabel(writer);
}
else
{AddLabel(writer);
AddPic(writer);

}
writer.RenderEndTag();
//base.Render(writer);
}
privatevoidAddPic(HtmlTextWriterwriter)
{

writer.AddAttribute(HtmlTextWriterAttribute.Src,base.ResolveClientUrl(pic.Src));
writer.AddAttribute(HtmlTextWriterAttribute.Height,pic.Height.ToString());
writer.AddAttribute(HtmlTextWriterAttribute.Width,pic.Width.ToString());

writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
//writer.Write("<imagesrc="+this.Src+"height="+pic.Height+"width="+pic.Width+"/>");
}
privatevoidAddLabel(HtmlTextWriterwriter)
{
writer.AddStyleAttribute(HtmlTextWriterStyle.VerticalAlign,"middle");
writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize,label.Font.Size.ToString()+"pt");
writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily,label.Font.FontFamily.Name);
if(label.Font.Bold)
{

writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight,"Bold");
}
writer.RenderBeginTag(HtmlTextWriterTag.Label);

writer.Write(label.Text==string.Empty?this.ClientID.ToString():label.Text);
writer.RenderEndTag();
//writer.Write("<label>"+Label.Text+"</label>");
}


#regionIPostBackEventHandler成员

publicvoidRaisePostBackEvent(stringeventArgument)
{
EventHandlere=(EventHandler)Events;
if(e!=null)
{
e(this,EventArgs.Empty);
}
}

#endregion

究竟是刚学,一定会有良多不敷和毛病,但愿人人斧正,感谢。
开头,持续勉力,看完别的的材料。
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。

若相依 发表于 2015-1-19 10:24:36

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.ckuyun.com),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

仓酷云 发表于 2015-1-26 22:33:40

ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。

老尸 发表于 2015-2-4 22:18:21

在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?

蒙在股里 发表于 2015-2-10 21:55:05

ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。

小女巫 发表于 2015-3-1 16:12:19

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。

兰色精灵 发表于 2015-3-10 20:45:27

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

柔情似水 发表于 2015-3-24 07:24:14

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
页: [1]
查看完整版本: ASP.NET网页编程之Asp.net2.0之自界说控件ImageButton