C#编程实现QQ界面的方法
更新时间:2020年6月25日 11:25 点击:1381
本文实例讲述了C#编程实现QQ界面的方法。分享给大家供大家参考,具体如下:
步骤:
1.新建一个页面,假如说叫VerticalMenu
2.把html代码copy到html代码区
3.把LoadTopMenu方法copy到cs代码区
4.运行即可
1.html代码
<STYLE type="text/css"> A:link {}{ COLOR: #000000; FONT-SIZE: 12px; TEXT-DECORATION: none} A:visited {}{ COLOR: #000000; FONT-SIZE: 12px; TEXT-DECORATION: none} A:hover {}{ COLOR: #006CD9; FONT-SIZE: 12px; TEXT-DECORATION: none} BODY {}{ FONT-SIZE: 12px;} TD {}{ FONT-SIZE: 12px; line-height: 150%} </STYLE> <script language="JavaScript"> <!-- function showitem(id,name) { //打开弹出式页面 //return ("<span><a href='"+id+"' target=_blank>"+name+"</a></span><br>") //在框架中打开 return ("<span><a href='#' onclick=/"url('"+id+"');/">"+name+"</a></span><br>") } function url(id) { var source = document.getElementById('fMain'); source.src=id; } function switchoutlookBar(number) { var i = outlookbar.opentitle; outlookbar.opentitle=number; var id1,id2,id1b,id2b if (number!=i && outlooksmoothstat==0){ if (number!=-1) { if (i==-1){ id2="blankdiv"; id2b="blankdiv"; } else{ id2="outlookdiv"+i; id2b="outlookdivin"+i; document.all("outlooktitle"+i).style.border="1px none navy"; document.all("outlooktitle"+i).style.background=outlookbar.maincolor; document.all("outlooktitle"+i).style.color="#ffffff"; document.all("outlooktitle"+i).style.textalign="center"; } id1="outlookdiv"+number id1b="outlookdivin"+number document.all("outlooktitle"+number).style.border="1px none white"; document.all("outlooktitle"+number).style.background=outlookbar.maincolor; //title document.all("outlooktitle"+number).style.color="#ffffff"; document.all("outlooktitle"+number).style.textalign="center"; smoothout(id1,id2,id1b,id2b,0); } else { document.all("blankdiv").style.display=""; document.all("blankdiv").sryle.height="100%"; document.all("outlookdiv"+i).style.display="none"; document.all("outlookdiv"+i).style.height="0%"; document.all("outlooktitle"+i).style.border="1px none navy"; document.all("outlooktitle"+i).style.background=outlookbar.maincolor; document.all("outlooktitle"+i).style.color="#ffffff"; document.all("outlooktitle"+i).style.textalign="center"; } } } function smoothout(id1,id2,id1b,id2b,stat) { if(stat==0){ tempinnertext1=document.all(id1b).innerHTML; tempinnertext2=document.all(id2b).innerHTML; document.all(id1b).innerHTML=""; document.all(id2b).innerHTML=""; outlooksmoothstat=1; document.all(id1b).style.overflow="hidden"; document.all(id2b).style.overflow="hidden"; document.all(id1).style.height="0%"; document.all(id1).style.display=""; setTimeout("smoothout('"+id1+"','"+id2+"','"+id1b+"','"+id2b+"',"+outlookbar.inc+")",outlookbar.timedalay); } else { stat+=outlookbar.inc; if (stat>100) stat=100; document.all(id1).style.height=stat+"%"; document.all(id2).style.height=(100-stat)+"%"; if (stat<100) setTimeout("smoothout('"+id1+"','"+id2+"','"+id1b+"','"+id2b+"',"+stat+")",outlookbar.timedalay); else { document.all(id1b).innerHTML=tempinnertext1; document.all(id2b).innerHTML=tempinnertext2; outlooksmoothstat=0; document.all(id1b).style.overflow="auto"; document.all(id2).style.display="none"; } } } function getOutLine() { outline="<table "+outlookbar.otherclass+">"; for (i=0;i<(outlookbar.titlelist.length);i++) { outline+="<tr><td name=outlooktitle"+i+" id=outlooktitle"+i+" "; if (i!=outlookbar.opentitle) outline+=" nowrap align=center style='cursor:hand;background-color:"+outlookbar.maincolor+";color:#ffffff;height:20;border:1 none navy' "; else outline+=" nowrap align=center style='cursor:hand;background-color:"+outlookbar.maincolor+";color:white;height:20;border:1 none white' "; outline+=outlookbar.titlelist[i].otherclass outline+=" onclick='switchoutlookBar("+i+")'><span class=smallFont>"; outline+=outlookbar.titlelist[i].title+"</span></td></tr>"; outline+="<tr><td name=outlookdiv"+i+" valign=top align=center id=outlookdiv"+i+" style='width:100%" if (i!=outlookbar.opentitle) outline+=";display:none;height:0%;"; else outline+=";display:;height:100%;"; outline+="'><div name=outlookdivin"+i+" id=outlookdivin"+i+" style='overflow:auto;width:100%;height:100%'>"; for (j=0;j<outlookbar.itemlist[i].length;j++) outline+=showitem(outlookbar.itemlist[i][j].key,outlookbar.itemlist[i][j].title); outline+="</div></td></tr>" } outline+="</table>" return outline } function show() { var outline; outline="<div id=outLookBarDiv name=outLookBarDiv style='width=100%;height:100%'>" outline+=outlookbar.getOutLine(); outline+="</div>" document.write(outline); } function theitem(intitle,instate,inkey) { this.state=instate; this.otherclass=" nowrap "; this.key=inkey; this.title=intitle; } function addtitle(intitle) { outlookbar.itemlist[outlookbar.titlelist.length]=new Array(); outlookbar.titlelist[outlookbar.titlelist.length]=new theitem(intitle,1,0); return(outlookbar.titlelist.length-1); } function additem(intitle,parentid,inkey) { if (parentid>=0 && parentid<=outlookbar.titlelist.length) { outlookbar.itemlist[parentid][outlookbar.itemlist[parentid].length]=new theitem(intitle,2,inkey); outlookbar.itemlist[parentid][outlookbar.itemlist[parentid].length-1].otherclass=" nowrap align=left style='height:5' "; return(outlookbar.itemlist[parentid].length-1); } else additem=-1; } function outlook() { this.titlelist=new Array(); this.itemlist=new Array(); this.divstyle="style='height:100%;width:100%;overflow:auto' align=center";//可以在这里设置对齐方式 this.otherclass="border=0 cellspacing='0' cellpadding='0' style='height:100%;width:100%'valign=middle align=center "; this.addtitle=addtitle; this.additem=additem; this.starttitle=-1; this.show=show; this.getOutLine=getOutLine; this.opentitle=this.starttitle; this.reflesh=outreflesh; this.timedelay=50; this.inc=10; this.maincolor = "#336699" } function outreflesh() { document.all("outLookBarDiv").innerHTML=outlookbar.getOutLine(); } function locatefold(foldname) { if (foldname=="") foldname = outlookbar.titlelist[0].title for (var i=0;i<outlookbar.titlelist.length;i++) { if(foldname==outlookbar.titlelist[i].title) { outlookbar.starttitle=i; outlookbar.opentitle=i; } } } var outlookbar=new outlook(); var tempinnertext1,tempinnertext2,outlooksmoothstat outlooksmoothstat = 0; <%=LoadVerticalMenu()%>//从数据库产生垂直菜单 //--> </script> <table id="mnuList" style="WIDTH:150px;HEIGHT: 100%" cellspacing="0" cellpadding="0" align="left" border="0"> <tr> <td bgcolor="#F0F0E5" id="outLookBarShow" style="HEIGHT: 100%" valign="top" align="middle" name="outLookBarShow"> <script language="JavaScript"> <!-- locatefold("") outlookbar.show() //--> </script> </td> </tr> </table>
2.cs代码
public class VerticalMenu : System.Web.UI.Page { protected DataRow[] father; protected DataRow[] first; private void Page_Load(object sender, System.EventArgs e) { // 模拟QQ菜单 } public static string ConnectionString=System.Configuration .ConfigurationSettings .AppSettings["ConnectionString"]; GetDataSet#region GetDataSet public static DataSet GetDataSet(string sql) { SqlDataAdapter sda =new SqlDataAdapter(sql,ConnectionString); DataSet ds=new DataSet(); sda.Fill(ds); return ds; } #endregion protected string LoadVerticalMenu() { string sqlFather="select * from PowerSetting"; DataSet dsFather=GetDataSet(sqlFather); father=dsFather.Tables[0].Select("IsBoot=0","IsBoot"); string menu=""; foreach(DataRow drfather in father) { menu+="var t;"; menu+="t=outlookbar.addtitle('"+drfather["Description"]+"');"; first=dsFather.Tables[0].Select("ParentID='"+Convert.ToInt32(drfather["ParentID"])+"' and IsBoot=1","IsBoot"); foreach(DataRow drfirst in first) { menu+="outlookbar.additem('"+drfirst["Description"]+"',t,'"+drfirst["Url"]+"');"; } } return menu; } Web Form Designer generated code#region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /**//**//**//// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion }
3.数据库脚本
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PowerSetting]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PowerSetting] GO CREATE TABLE [dbo].[PowerSetting] ( [PowerSettingID] [int] IDENTITY (1, 1) NOT NULL , --id [ParentID] [int] NOT NULL , --父节点id [Description] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL , --菜单描述内容 [Icon] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , --要显示图标 [Url] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL , --url [Target] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , --_self,_blank等 [CreateByID] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , --创建人id [CreateON] [datetime] NULL , --创建日期 [IsEnabled] [bit] NULL , --是否可用 [IsBoot] [int] NULL --是不是根节点;1是其他不是 ) ON [PRIMARY] GO
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#数据结构与算法教程》、《C#常见控件用法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》
希望本文所述对大家C#程序设计有所帮助。
相关文章
- 我们在使用C#做项目的时候,基本上都需要制作登录界面,那么今天我们就来一步步看看,如果简单的实现登录界面呢,本文给出2个例子,由简入难,希望大家能够喜欢。...2020-06-25
- 这篇文章主要介绍了C# 字段和属性的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-11-03
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章主要介绍了C#实现简单的Http请求的方法,以实例形式较为详细的分析了C#实现Http请求的具体方法,需要的朋友可以参考下...2020-06-25
- 本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
- 本文主要介绍了C#中new的几种用法,具有很好的参考价值,下面跟着小编一起来看下吧...2020-06-25
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
这篇文章主要介绍了使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25- 这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 最近做一个小项目不可避免的需要前端脚本与后台进行交互。由于是在asp.net中实现,故问题演化成asp.net中jiavascript与后台c#如何进行交互。...2020-06-25
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
- 轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
- 本文主要介绍了C#变量命名规则小结,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-09
- 这篇文章主要介绍了C#绘制曲线图的方法,以完整实例形式较为详细的分析了C#进行曲线绘制的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 这篇文章主要介绍了c#自带缓存使用方法,包括获取数据缓存、设置数据缓存、移除指定数据缓存等方法,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#中(&&,||)与(&,|)的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要用实例讲解C#递归算法的概念以及用法,文中代码非常详细,帮助大家更好的参考和学习,感兴趣的朋友可以了解下...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了C#中list用法,结合实例形式分析了C#中list排序、运算、转换等常见操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25