📄 formaccess.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using IMLibrary;
namespace LanMsg
{
/// <summary>
/// 窗口访问类
/// </summary>
sealed class FormAccess
{
public FormAccess()
{
}
#region 变量区
/// <summary>
/// 资源管理器
/// </summary>
public static System.Resources.ResourceManager resourceManager = new System.Resources.ResourceManager("LanMsg.Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());
/// <summary>
/// 应用程序参数设置
/// </summary>
public static LanMsg.Properties.Settings settings = new LanMsg.Properties.Settings();
/// <summary>
/// 用户当前输入的登录密码
/// </summary>
public static string selfPassword = null;
/// <summary>
/// 标识用户修改密码是否成功
/// </summary>
public static bool isChangePasswordSuccessful = false;
/// <summary>
/// 当前用户信息
/// </summary>
public static UserInfo selfInfo = new UserInfo();
/// <summary>
/// 本地局域网IP
/// </summary>
public static System.Net.IPAddress LocalIp;
/// <summary>
/// 本地局域网UDP使用的端口
/// </summary>
public static int LocalPort;
/// <summary>
/// 设置或获取服务器IP
/// </summary>
public static System.Net.IPAddress ServerIP = System.Net.IPAddress.Parse ("127.0.0.1");//System.Net.IPAddress.Parse(FormAccess.resourceManager.GetString("ServerIp"));////服务器IP202.101.73.47192.168.4.164 10.211.25.72
/// <summary>
/// 设置或获取服务器端口
/// </summary>
public static int ServerPort = 22111;//Convert.ToInt32( FormAccess.resourceManager.GetString("ServerPort") ); //
public static IMLibrary.SockUDP sockUDP=new SockUDP ();
/// <summary>
/// 程序主窗口
/// </summary>
public static FormMain formMain;
/// <summary>
/// 发送消息窗口集合
/// </summary>
public static IMLibrary.FormCollections sendMsgForms = new IMLibrary.FormCollections();
/// <summary>
/// 组织机构、用户信息版本类
/// </summary>
public static IMLibrary.versionDepAndUser ServerDepAndUserVersion = new IMLibrary.versionDepAndUser();
/// <summary>
/// 部门集合
/// </summary>
public static exDepartmentCollections deps = new exDepartmentCollections();
/// <summary>
/// 用户集合
/// </summary>
public static exUserCollention Users = new exUserCollention();
/// <summary>
/// 当前获得的在线用户数
/// </summary>
public static int CurrGetOnlineUserCount = 0;
/// <summary>
/// 当前获得的组织机构部门数
/// </summary>
public static int CurrGetDepCount = 0;
#endregion
#region 查找部门
/// <summary>
/// 在组织机构集合中查找部门是否存在
/// </summary>
/// <param name="depId">部门ID</param>
/// <returns>返回部门信息</returns>
public static exDepartment findDep(int DepId )
{
exDepartment tempDep = null;
foreach (exDepartment dep in deps )
if (dep.depId == DepId)
{
tempDep = dep;
break;//退出循环
}
return tempDep;
}
#endregion
#region 查找用户
/// <summary>
/// 在用户集合中查找用户是否存在
/// </summary>
///<param name="userId">用户ID</param>
///<param name="users">用户集合</param>
public static exUser findUser(string userId )
{
exUser tempUser = null;
foreach (exUser user in Users)
if (user.UserID.ToLower() == userId.ToLower())
{
tempUser = user;
break;//退出循环
}
return tempUser;
}
#endregion
#region 查找发送消息窗口
/// <summary>
/// 查找发送消息窗口
/// </summary>
/// <param name="formId">窗口ID</param>
/// <returns>返回发送消息窗口</returns>
public static Form findForm(string formId)
{
Form sendMsg = null;
foreach (Form f in sendMsgForms)
if (f.Tag.ToString() == formId)
{
sendMsg = f ;
break;//退出循环
}
return sendMsg;
}
#endregion
#region 从本地数据库中读取组织机构信息,将部门添加进集合
/// <summary>
/// 从本地数据库中读取组织机构信息,将部门添加进集合
/// </summary>
public static void dbDepToDeps()
{
deps.Clear();
System.Data.OleDb.OleDbDataReader dr;
try
{
dr = IMLibrary.OleDb.DataAccess.ExSQLReDr("select * from Department");
}
catch { return; }
if (dr != null)
{
while (dr.Read())
{
exDepartment dep = new exDepartment();
dep.depId = Convert.ToInt32(dr["depId"]);
dep.depName = Convert.ToString(dr["depName"]);
dep.superiorId = Convert.ToInt32(dr["superiorId"]);
dep.Node.Text = dep.depName ;//+ "(0/0)"
dep.Node.ToolTipText = dep.depName;
dep.Node.Name = dep.depId.ToString();
dep.Node.Tag = "0";
if ( findDep(dep.depId ) == null)//如果在用户集合中没有找到此部门则添加
deps.add(dep);
}
dr.Close();
dr.Dispose();
}
}
#endregion
#region 将部门集合deps初始化到treeview控件
/// <summary>
/// 将部门集合deps初始化到treeview控件
/// </summary>
/// <param name="tv">treeview控件</param>
/// <param name="deps">部门集合deps</param>
public static void depsToTreeView(System.Windows.Forms.TreeView tv)
{
tv.Nodes.Clear();//清空树节点
try
{
foreach (LanMsg.exDepartment dep in deps)
{
if (dep.superiorId == 0)
{
tv.Nodes.Add(dep.Node);
}
}
bool t = false;
exDepartment parentDep;
int rCount = 0;
int sqrCount = ( deps.Count * deps.Count);//最大循环次数
while (!t && rCount <= sqrCount)//如果查询还未结束且循环次数没有超过部门数n平方,则继续
{
t = true;
foreach (exDepartment dep in deps)
{
if (dep.superiorId != 0 && dep.Node.Parent == null) //如果要添加的部门节点不是根部门节点且此节点还未添加
{
parentDep = findDep(dep.superiorId );//找到上级部门节点
Console.Write(parentDep.depName + " ->" + dep.depName + " \n");
if (parentDep.Node.Parent != null || parentDep.superiorId == 0)// 当前的上级部门已经添加时,添加部门
{
Console.Write(parentDep.depName + dep.depId.ToString() + "\n");
parentDep.Node.Nodes.Add(dep.Node);
}
else//如果当前部门节点的上级部门不是根部门节点并且上级部门的上级部门还未添加,则添加不成功,循环后再添加
{
t = false;
}
}
rCount++;//查询次数增1,如果大于部门n平方还未结束,则强行结束
}
}
}
catch (Exception e)
{ Console.Write(e.Message + e.Source); }
}
#endregion
#region 向服务器发送要求获得部分组织机构部门信息
/// <summary>
/// 向服务器发送要求获得部分组织机构部门信息
/// </summary>
public static void requestDepartmentCollections( )
{
if (CurrGetDepCount == FormAccess.ServerDepAndUserVersion.departmentCount) return;//如果组织机构已经全部获得则退出
IMLibrary.ServerMsg msg = new ServerMsg();
msg.msgContent = IMLibrary.TextEncoder.intToBytes(CurrGetDepCount);//要求获得第this.deps.Count+1个开始的部门信息
sendMsgToServer(5, msg);//发送请求
}
#endregion
#region 向服务器发送要求获得部分用户信息
/// <summary>
/// 向服务器发送要求获得部分用户信息
/// </summary>
public static void requestUserCollections( )
{
if (CurrGetOnlineUserCount == FormAccess.ServerDepAndUserVersion.usersCount) return;//如果用户信息已经全部获得,则退出
IMLibrary.ServerMsg msg = new IMLibrary.ServerMsg();
msg.msgContent = IMLibrary.TextEncoder.intToBytes(CurrGetOnlineUserCount);//要求获得第this.CurrGetOnlineUserCount +1个开始的部门信息
sendMsgToServer(6, msg);//发送请求
}
#endregion
#region 从本地数据库中读取所有用户信息,将用户添加进集合
/// <summary>
/// 从本地数据库中读取所有用户信息,将用户添加进集合
/// </summary>
public static void dbUserToUsers()
{
Users.Clear();//清空用户集合
System.Data.OleDb.OleDbDataReader dr;
try
{
dr = IMLibrary.OleDb.DataAccess.ExSQLReDr("select * from systemUsers order by orderID asc ");
}
catch { return; }
if (dr != null)
{
while (dr.Read())
{
exUser user = new exUser();
user.UserID = Convert.ToString(dr["UserID"]).Trim();
user.userName = Convert.ToString(dr["userName"]).Trim();
user.depId = Convert.ToInt32(dr["depId"]);
if ( findUser(user.UserID ) == null)//如果在用户集合中没有找到此用户则添加
{
Users.add(user);
}
}
dr.Close();
dr.Dispose();
}
}
#endregion
#region 将用户集合users初始化到treeview控件
/// <summary>
/// 将用户集合users初始化到treeview控件
/// </summary>
/// <param name="tv">treeview控件</param>
/// <param name="Users">部门集合deps</param>
public static void usersToTreeView(System.Windows.Forms.TreeView tv )
{
exDepartment parentDep;
try
{
foreach (LanMsg.exUser user in Users)
{
parentDep = findDep(user.depId );//查找此用户的部门树节点是否添加,如果添加则加入到此树节点
if (parentDep != null)
{
parentDep.Node.Nodes.Add(user.Node);
user.SetDepNodeShow();
}
}
}
catch (Exception e)
{ Console.Write(e.Message + e.Source); }
SetTreeViewNodeShow();//显示节点信息
}
#endregion
#region 清空树图中所有用户节点
/// <summary>
/// 清空树图中所有用户节点
/// </summary>
public static void clearTreeViewUser()
{
foreach (exUser user in Users)
user.Node.Remove();
SetTreeViewNodeShow();
}
#endregion
#region 显示节点信息
/// <summary>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -