?? frmmain.vb
字號:
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.IO
Imports CsdnV3.comm
Public Class FrmMain
#Region "窗體加載"
Private m As New WebServer
Private t As New Threading.Thread(AddressOf m.Main)
Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Visible = False
t.Start()
''''''''''''''''''''''''''''
'先檢查數(shù)據(jù)庫文件是否存在
If Not System.IO.File.Exists("CSDN.mdb") Then
MsgBox("數(shù)據(jù)庫文件[CSDN.mdb]丟失!")
Me.Dispose()
End If
''以begin.js作為樹的入口加載導(dǎo)航
LoadTreeNodes("begin.js", Me.tvMain.Nodes)
'登陸默認(rèn)用戶
CheckDefaultuser("")
'初始化多用戶切換彩單
InitUsersMenu()
''布局
initTipLayOut()
'開始監(jiān)視短消息
Me.TimerMsg.Start()
Me.WindowState = FormWindowState.Maximized
''Me.tc.TabPages.Add(New tpHome)
''tpTip.ShowTP(Me.U2u("http://community.csdn.net//Expert/TopicView1.asp?id=4607944"), Me.tc)
Me.Visible = True
End Sub
#End Region
Sub initTipLayOut()
If My.Settings.LayOut = "11" Then
Me.spSec.Panel2Collapsed = True
End If
If My.Settings.LayOut = "111" Then
Me.spSec.Panel2Collapsed = False
Me.spSec.Orientation = Orientation.Vertical
End If
If My.Settings.LayOut = "211" Then
Me.spSec.Panel2Collapsed = False
Me.spSec.Orientation = Orientation.Horizontal
End If
If Me.spSec.Panel2Collapsed = True Then
For Each tp As TabPage In tc2.TabPages
tp.Parent = tc
'If TypeOf tp Is tpBase Then
' Dim temp As tpBase = tp
' temp.Close()
'Else
' tp.Dispose()
'End If
Next
End If
End Sub
#Region "初始化多用戶切換彩單"
''' <summary>
''' 初始化多用戶切換彩單
''' </summary>
''' <remarks>只登陸默認(rèn)用戶</remarks>
Private Sub InitUsersMenu()
tbUsersLogin.DropDown.Items.Clear()
'動態(tài)增加“管理登陸”
Dim tsi As ToolStripItem = tbUsersLogin.DropDown.Items.Add("管理登陸..")
tsi.ToolTipText = "管理登陸用戶"
AddHandler tsi.Click, AddressOf Login_Click
tbUsersLogin.DropDown.Items.Add("-")
'動態(tài)增加用戶
For Each ett As entity_TB_LoginUser In frmLogin.HistoryUsers.Values
tsi = tbUsersLogin.DropDown.Items.Add(ett.UserName)
tsi.ToolTipText = "將" & ett.UserName & "設(shè)置為當(dāng)前用戶!"
tsi.ImageScaling = ToolStripItemImageScaling.None
'為默認(rèn)用戶顯示menu icon
If ett.Default Then
tsi.Image = My.Resources.彩單選中2
End If
AddHandler tsi.Click, AddressOf ChangeUser_Click
Next
End Sub
#End Region
#Region "切換用戶"
''' <summary>
''' 切換用戶
''' </summary>
''' <param name="UserName">可選參數(shù),不提供就表示為使用默認(rèn)用戶。</param>
''' <remarks></remarks>
Private Sub CheckDefaultuser(Optional ByVal UserName As String = "")
'開始檢查登陸默認(rèn)用戶
Dim ett As entity_TB_LoginUser = frmLogin.DefaultUser(UserName) '獲取默認(rèn)用戶
If Not ett Is Nothing Then '如果設(shè)置了默認(rèn)用戶。
'檢查是否有效
Dim cl As New CheckLogin(ett)
cl.Check()
If cl.hasLogined Then
'設(shè)置當(dāng)前用戶
comm.Comm.SetDefuser(ett)
'如果檢查成功,就顯示當(dāng)前用戶。
Me.lLoginText.Text = "歡迎:" & ett.UserName
Me.llLoginOperation.Text = "切換"
'處理我設(shè)置的 感興趣的社區(qū)
For Each js As jsTreeNode In Me.tvMain.Nodes
If js.Text = "我感興趣的社區(qū)" Then
js.Nodes.Clear()
js.HasProced = False
If js.childNodesFileName.Length > 0 And Not js.HasProced Then
Me.LoadTreeNodes(js.childNodesFileName, js.Nodes)
js.HasProced = True
js.Expand()
End If
End If
Exit For
Next
End If
End If
'重新監(jiān)視短消息
i = 0
End Sub
#End Region
#Region "CSDN導(dǎo)航樹處理函數(shù)"
''' <summary>
''' CSDN導(dǎo)航樹處理函數(shù)
''' </summary>
''' <param name="strUrl">JS地址</param>
''' <param name="Nodes">節(jié)點位置</param>
''' <param name="SaveFile">是否保存文件</param>
''' <remarks></remarks>
Private Sub LoadTreeNodes(ByVal strUrl As String, ByVal Nodes As TreeNodeCollection, Optional ByVal SaveFile As Boolean = True)
'對應(yīng)的HTTP地址
strUrl = comm.Comm.CSDN_COMINITY_TREENODEDATA_URL + strUrl
Dim html As String = ""
Dim u As New Uri(strUrl)
'計算本地文件名
Dim fileName As String = ""
fileName = Application.StartupPath & u.LocalPath.Replace("/", "\")
'這里使用的gb2312編碼
Dim ec As Encoding = System.Text.Encoding.GetEncoding("GB2312")
If File.Exists(fileName) And fileName.EndsWith(".js") Then
'如果js存在的話直接讀文件
html = My.Computer.FileSystem.ReadAllText(fileName)
Else
'不存在的話就用網(wǎng)絡(luò)上直接load
Dim http As New HttpProc
http.strUrl = strUrl
http.cookiePost = comm.Comm.CL
http.encoding = ec
http.cookiePost = comm.Comm.CL
http.Proc()
html = http.ResHtml
''保存當(dāng)前文件
If SaveFile Then
comm.FileStream.SaveFile(fileName, html)
End If
End If
'使用正則匹配每一行
For Each m As Match In comm.RegMatch.Matches("tree.nodes\['(?<D>[^\r]+?)'\]\040\=\040'(?<D>[^\r]+?)';\r", html)
'對每行的結(jié)果再解析
Dim jsNode As New jsTreeNode(m.Value)
If jsNode.childNodesFileName.Length > 0 Then
jsNode.SelectedImageIndex = 1
jsNode.ImageIndex = 1
Else
jsNode.SelectedImageIndex = 0
jsNode.ImageIndex = 0
End If
If Not jsNode.StrIndex = "0_1" Then
Dim badd As Boolean = False
If Not jsNode.StrIndex Is Nothing Then
For Each js As jsTreeNode In Nodes
If js.StrIndex.Split("_".ToCharArray)(1) = jsNode.StrIndex.Split("_".ToCharArray)(0) Then
js.Nodes.Add(jsNode)
badd = True
js.SelectedImageIndex = 1
js.ImageIndex = 1
Exit For
End If
Next
End If
If Not badd Then
Nodes.Add(jsNode)
End If
End If
Next
End Sub
#End Region
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -