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

时间:2022-05-08 05:53:40

本文实例讲述了C#编程实现QQ界面的方法。分享给大家供大家参考,具体如下:

步骤:

1.新建一个页面,假如说叫VerticalMenu

2.把html代码copy到html代码区

3.把LoadTopMenu方法copy到cs代码区

4.运行即可

1.html代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<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代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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.数据库脚本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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#程序设计有所帮助。