C#编程实现QQ界面的方法

作者:Microblue 时间:2023-02-05 23:35:45 

本文实例讲述了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#,QQ界面
0
投稿

猜你喜欢

  • Java 超详细讲解核心类Spring JdbcTemplate

    2021-08-05 15:30:57
  • Java8中的 Lambda表达式教程

    2023-10-13 01:32:29
  • c#通用登录模块分享

    2023-07-21 15:54:31
  • C++语言实现线性表之链表实例

    2023-06-20 22:21:20
  • java面向对象设计原则之里氏替换原则示例详解

    2023-02-02 05:04:41
  • Mybatis-Plus分页的使用与注意事项

    2022-08-14 22:00:56
  • DevExpress获取TreeList可视区域节点集合的实现方法

    2023-09-18 15:42:05
  • MyBatis一二级缓存

    2021-07-03 13:01:59
  • C# WPF如何反射加载Geometry几何图形数据图标

    2021-09-06 11:39:08
  • ViewPager实现漂亮的引导页

    2022-12-27 21:56:58
  • c#实现16进制和字符串之间转换的代码

    2023-07-22 08:28:09
  • 详解 Corba开发之Java实现Service与Client

    2023-09-23 03:42:48
  • Android实现文字上下滚动效果

    2023-02-02 07:40:00
  • 解析C#中[],List,Array,ArrayList的区别及应用

    2022-07-29 16:24:10
  • C#操作CSV文件类实例

    2023-04-29 13:49:44
  • C#中数组初始化与数组元素复制的方法

    2023-05-14 15:45:06
  • IDEA-Maven项目的jdk版本设置方法

    2022-07-21 16:04:17
  • SpringBoot之@Value获取application.properties配置无效的解决

    2023-09-15 22:37:55
  • Maven本地打包war包实现代码解析

    2021-09-06 12:51:14
  • Android使用ViewPager实现图片滑动预览效果

    2023-02-15 15:28:28
  • asp之家 软件编程 m.aspxhome.com