FormMain.cs
上传用户:lqb116
上传日期:2014-04-04
资源大小:2712k
文件大小:55k
- using System;
- using System.Drawing;
- using System.Collections;
- using System.ComponentModel;
- using System.Windows.Forms;
- using DevComponents.DotNetBar;
- using DevComponents.DotNetBar.Rendering;
- using System.Net;
- using LanMsg.CustomUIControls;
- namespace LanMsg
- {
- /// <summary>
- /// Form2 的摘要说明。
- /// </summary>
- public class FormMain :DevComponents.DotNetBar.Office2007RibbonForm //System.Windows.Forms.Form
- {
- private DevComponents.DotNetBar.TabItem tabItem1;
- private DevComponents.DotNetBar.ItemContainer menuFileContainer;
- private DevComponents.DotNetBar.ItemContainer menuFileTwoColumnContainer;
- private DevComponents.DotNetBar.ItemContainer menuFileItems;
- private DevComponents.DotNetBar.ButtonItem buttonFileSaveAs;
- private DevComponents.DotNetBar.ItemContainer menuFileMRU;
- private DevComponents.DotNetBar.LabelItem labelItem8;
- private DevComponents.DotNetBar.ItemContainer menuFileBottomContainer;
- private DevComponents.DotNetBar.ButtonItem buttonOptions;
- private DevComponents.DotNetBar.ButtonItem buttonExit;
- private DevComponents.DotNetBar.Bar bar1;
- private DevComponents.DotNetBar.LabelItem labelStatus;
- internal DevComponents.DotNetBar.LabelItem labelPosition;
- private DevComponents.DotNetBar.RibbonControl ribbonControl1;
- private DevComponents.DotNetBar.RibbonTabItemGroup ribbonTabItemGroup1;
- internal System.Windows.Forms.ImageList imageList1;
- private System.ComponentModel.IContainer components;
- private DevComponents.DotNetBar.ButtonItem butMenuMain;
- private DevComponents.DotNetBar.ButtonItem butMeState;
- private DevComponents.DotNetBar.ButtonItem butMenuMainExit;
- private DevComponents.DotNetBar.RibbonPanel ribbonPanel1;
- private System.Windows.Forms.Panel panel1;
- private System.Windows.Forms.Panel panel2;
- private System.Windows.Forms.Panel panel3;
- internal System.Windows.Forms.TreeView TvUsers;
- private DevComponents.DotNetBar.RibbonTabItem LabselfName;
- public ClassUserInfo selfInfo=new ClassUserInfo();
- internal System.Windows.Forms.ImageList imageListFace;
- private System.Windows.Forms.Timer timerCheckOnlinState;//保存用户自己的信息
- public Controls.ClassForms forms=new LanMsg.Controls.ClassForms();
- private IPAddress ServerIP=IPAddress.Parse("127.0.0.1");//服务器IP192.168.1.100192.168.2.3
- private int ServerPort=3211;//服务器端口
- private LanMsg.Controls.SockUDP sockUDP1;
- private DevComponents.DotNetBar.ButtonItem butMsgSendGourp;
- private System.Windows.Forms.NotifyIcon NotifyIcon;
- private DevComponents.DotNetBar.ButtonItem butMsgMis;
- public Controls.ClassUsers MyUsers =new Controls.ClassUsers();
- private DevComponents.DotNetBar.ButtonItem buttonItemState1;
- private DevComponents.DotNetBar.ButtonItem buttonItemState2;
- private DevComponents.DotNetBar.ButtonItem buttonItemState3;
- private DevComponents.DotNetBar.ButtonItem buttonItemState4;
- private DevComponents.DotNetBar.ButtonItem buttonItemState5;
- private DevComponents.DotNetBar.ButtonItem buttonItemState6;
- private DevComponents.DotNetBar.ButtonItem buttonItemClose;
- private DevComponents.DotNetBar.ButtonItem butForFormSetting;
- private LanMsg.ClassFormMain formmain=new ClassFormMain();
- public bool IsWindowsExit=false;
- public LanMsg.ClassOptionData optDB;
- private DevComponents.DotNetBar.ButtonItem butSendMsg;
- private DevComponents.DotNetBar.ButtonItem butOpenShared;
- private DevComponents.DotNetBar.ButtonItem butSendFile;
- private DevComponents.DotNetBar.ButtonItem ButAbout;
- public FormMain()
- {
- //
- // Windows 窗体设计器支持所必需的
- //
- InitializeComponent();
- //DisableX(this);
- //
- // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
- //
- for(int i=0;i<96;i++)
- this.imageListFace.Images.Add(System.Drawing.Image.FromStream (System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("LanMsg.Resources."+ i.ToString() +".gif")) );
- }
- /// <summary>
- /// 清理所有正在使用的资源。
- /// </summary>
- protected override void Dispose( bool disposing )
- {
- this.sendMsgToServer(new LanMsg.Controls.ClassMsg(2,selfInfo.ID,System.Text.Encoding.Unicode.GetBytes("0")));
- this.sendMsgToAllUser(new LanMsg.Controls.ClassMsg(0,this.selfInfo.ID, null));
- this.sockUDP1.CloseSock();
- AppExit();
- if( disposing )
- {
- if(components != null)
- {
- components.Dispose();
- }
- }
- base.Dispose( disposing );
- }
- #region Windows 窗体设计器生成的代码
- /// <summary>
- /// 设计器支持所需的方法 - 不要使用代码编辑器修改
- /// 此方法的内容。
- /// </summary>
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FormMain));
- this.tabItem1 = new DevComponents.DotNetBar.TabItem(this.components);
- this.menuFileContainer = new DevComponents.DotNetBar.ItemContainer();
- this.menuFileTwoColumnContainer = new DevComponents.DotNetBar.ItemContainer();
- this.menuFileItems = new DevComponents.DotNetBar.ItemContainer();
- this.menuFileMRU = new DevComponents.DotNetBar.ItemContainer();
- this.menuFileBottomContainer = new DevComponents.DotNetBar.ItemContainer();
- this.buttonOptions = new DevComponents.DotNetBar.ButtonItem();
- this.buttonExit = new DevComponents.DotNetBar.ButtonItem();
- this.buttonFileSaveAs = new DevComponents.DotNetBar.ButtonItem();
- this.labelItem8 = new DevComponents.DotNetBar.LabelItem();
- this.bar1 = new DevComponents.DotNetBar.Bar();
- this.labelStatus = new DevComponents.DotNetBar.LabelItem();
- this.labelPosition = new DevComponents.DotNetBar.LabelItem();
- this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl();
- this.ribbonPanel1 = new DevComponents.DotNetBar.RibbonPanel();
- this.LabselfName = new DevComponents.DotNetBar.RibbonTabItem();
- this.butMenuMain = new DevComponents.DotNetBar.ButtonItem();
- this.butSendMsg = new DevComponents.DotNetBar.ButtonItem();
- this.butSendFile = new DevComponents.DotNetBar.ButtonItem();
- this.butOpenShared = new DevComponents.DotNetBar.ButtonItem();
- this.butMeState = new DevComponents.DotNetBar.ButtonItem();
- this.buttonItemState1 = new DevComponents.DotNetBar.ButtonItem();
- this.buttonItemState2 = new DevComponents.DotNetBar.ButtonItem();
- this.buttonItemState3 = new DevComponents.DotNetBar.ButtonItem();
- this.buttonItemState4 = new DevComponents.DotNetBar.ButtonItem();
- this.buttonItemState5 = new DevComponents.DotNetBar.ButtonItem();
- this.buttonItemState6 = new DevComponents.DotNetBar.ButtonItem();
- this.butMsgSendGourp = new DevComponents.DotNetBar.ButtonItem();
- this.butMsgMis = new DevComponents.DotNetBar.ButtonItem();
- this.butForFormSetting = new DevComponents.DotNetBar.ButtonItem();
- this.buttonItemClose = new DevComponents.DotNetBar.ButtonItem();
- this.butMenuMainExit = new DevComponents.DotNetBar.ButtonItem();
- this.ButAbout = new DevComponents.DotNetBar.ButtonItem();
- this.ribbonTabItemGroup1 = new DevComponents.DotNetBar.RibbonTabItemGroup();
- this.imageList1 = new System.Windows.Forms.ImageList(this.components);
- this.panel1 = new System.Windows.Forms.Panel();
- this.panel2 = new System.Windows.Forms.Panel();
- this.panel3 = new System.Windows.Forms.Panel();
- this.TvUsers = new System.Windows.Forms.TreeView();
- this.imageListFace = new System.Windows.Forms.ImageList(this.components);
- this.timerCheckOnlinState = new System.Windows.Forms.Timer(this.components);
- this.sockUDP1 = new LanMsg.Controls.SockUDP(this.components);
- this.NotifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
- ((System.ComponentModel.ISupportInitialize)(this.bar1)).BeginInit();
- this.ribbonControl1.SuspendLayout();
- this.SuspendLayout();
- //
- // tabItem1
- //
- this.tabItem1.Name = "tabItem1";
- this.tabItem1.Text = "tabItem1";
- //
- // menuFileContainer
- //
- this.menuFileContainer.LayoutOrientation = DevComponents.DotNetBar.eOrientation.Vertical;
- this.menuFileContainer.MinimumSize = new System.Drawing.Size(0, 0);
- this.menuFileContainer.Name = "menuFileContainer";
- this.menuFileContainer.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
- this.menuFileTwoColumnContainer,
- this.menuFileBottomContainer});
- //
- // menuFileTwoColumnContainer
- //
- //
- // menuFileTwoColumnContainer.BackgroundStyle
- //
- this.menuFileTwoColumnContainer.BackgroundStyle.PaddingBottom = 2;
- this.menuFileTwoColumnContainer.BackgroundStyle.PaddingLeft = 2;
- this.menuFileTwoColumnContainer.BackgroundStyle.PaddingRight = 2;
- this.menuFileTwoColumnContainer.BackgroundStyle.PaddingTop = 2;
- this.menuFileTwoColumnContainer.ItemSpacing = 0;
- this.menuFileTwoColumnContainer.MinimumSize = new System.Drawing.Size(0, 0);
- this.menuFileTwoColumnContainer.Name = "menuFileTwoColumnContainer";
- this.menuFileTwoColumnContainer.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
- this.menuFileItems,
- this.menuFileMRU});
- //
- // menuFileItems
- //
- this.menuFileItems.MinimumSize = new System.Drawing.Size(0, 0);
- this.menuFileItems.Name = "menuFileItems";
- //
- // menuFileMRU
- //
- this.menuFileMRU.LayoutOrientation = DevComponents.DotNetBar.eOrientation.Vertical;
- this.menuFileMRU.MinimumSize = new System.Drawing.Size(180, 0);
- this.menuFileMRU.Name = "menuFileMRU";
- //
- // menuFileBottomContainer
- //
- this.menuFileBottomContainer.HorizontalItemAlignment = DevComponents.DotNetBar.eHorizontalItemsAlignment.Right;
- this.menuFileBottomContainer.MinimumSize = new System.Drawing.Size(0, 0);
- this.menuFileBottomContainer.Name = "menuFileBottomContainer";
- this.menuFileBottomContainer.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
- this.buttonOptions,
- this.buttonExit});
- //
- // buttonOptions
- //
- this.buttonOptions.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText;
- this.buttonOptions.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
- this.buttonOptions.Image = ((System.Drawing.Image)(resources.GetObject("buttonOptions.Image")));
- this.buttonOptions.Name = "buttonOptions";
- this.buttonOptions.SubItemsExpandWidth = 24;
- this.buttonOptions.Text = "RibbonPad Opt&ions";
- //
- // buttonExit
- //
- this.buttonExit.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText;
- this.buttonExit.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
- this.buttonExit.Image = ((System.Drawing.Image)(resources.GetObject("buttonExit.Image")));
- this.buttonExit.Name = "buttonExit";
- this.buttonExit.SubItemsExpandWidth = 24;
- this.buttonExit.Text = "E&xit RibbonPad";
- //
- // buttonFileSaveAs
- //
- this.buttonFileSaveAs.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText;
- this.buttonFileSaveAs.Image = ((System.Drawing.Image)(resources.GetObject("buttonFileSaveAs.Image")));
- this.buttonFileSaveAs.Name = "buttonFileSaveAs";
- this.buttonFileSaveAs.SubItemsExpandWidth = 24;
- this.buttonFileSaveAs.Text = "&Save As...";
- //
- // labelItem8
- //
- this.labelItem8.BorderSide = DevComponents.DotNetBar.eBorderSide.Bottom;
- this.labelItem8.BorderType = DevComponents.DotNetBar.eBorderType.Etched;
- this.labelItem8.Name = "labelItem8";
- this.labelItem8.PaddingBottom = 2;
- this.labelItem8.PaddingTop = 2;
- this.labelItem8.Stretch = true;
- this.labelItem8.Text = "Recent Documents";
- //
- // bar1
- //
- this.bar1.AccessibleDescription = "DotNetBar Bar (bar1)";
- this.bar1.AccessibleName = "DotNetBar Bar";
- this.bar1.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar;
- this.bar1.AntiAlias = true;
- this.bar1.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.bar1.GrabHandleStyle = DevComponents.DotNetBar.eGrabHandleStyle.ResizeHandle;
- this.bar1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
- this.labelStatus,
- this.labelPosition});
- this.bar1.ItemSpacing = 2;
- this.bar1.Location = new System.Drawing.Point(2, 325);
- this.bar1.Name = "bar1";
- this.bar1.Size = new System.Drawing.Size(172, 17);
- this.bar1.Stretch = true;
- this.bar1.Style = DevComponents.DotNetBar.eDotNetBarStyle.Office2007;
- this.bar1.TabIndex = 10;
- this.bar1.TabStop = false;
- this.bar1.Text = "barStatus";
- //
- // labelStatus
- //
- this.labelStatus.BorderType = DevComponents.DotNetBar.eBorderType.None;
- this.labelStatus.Name = "labelStatus";
- this.labelStatus.PaddingLeft = 2;
- this.labelStatus.PaddingRight = 2;
- this.labelStatus.SingleLineColor = System.Drawing.Color.FromArgb(((System.Byte)(59)), ((System.Byte)(97)), ((System.Byte)(156)));
- this.labelStatus.Stretch = true;
- //
- // labelPosition
- //
- this.labelPosition.BorderType = DevComponents.DotNetBar.eBorderType.None;
- this.labelPosition.Name = "labelPosition";
- this.labelPosition.PaddingLeft = 2;
- this.labelPosition.PaddingRight = 2;
- this.labelPosition.SingleLineColor = System.Drawing.Color.FromArgb(((System.Byte)(59)), ((System.Byte)(97)), ((System.Byte)(156)));
- this.labelPosition.Width = 100;
- //
- // ribbonControl1
- //
- this.ribbonControl1.BackColor = System.Drawing.SystemColors.Control;
- this.ribbonControl1.CaptionVisible = true;
- this.ribbonControl1.CategorizeMode = DevComponents.DotNetBar.eCategorizeMode.Categories;
- this.ribbonControl1.Controls.Add(this.ribbonPanel1);
- this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top;
- this.ribbonControl1.DockPadding.Bottom = 2;
- this.ribbonControl1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
- this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
- this.LabselfName});
- this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
- this.ribbonControl1.Location = new System.Drawing.Point(2, 2);
- this.ribbonControl1.MdiSystemItemVisible = false;
- this.ribbonControl1.Name = "ribbonControl1";
- this.ribbonControl1.QuickToolbarItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
- this.butMenuMain});
- this.ribbonControl1.RibbonStripIndent = 55;
- this.ribbonControl1.Size = new System.Drawing.Size(172, 46);
- this.ribbonControl1.Style = DevComponents.DotNetBar.eDotNetBarStyle.Office2007;
- this.ribbonControl1.TabGroupHeight = 14;
- this.ribbonControl1.TabGroups.AddRange(new DevComponents.DotNetBar.RibbonTabItemGroup[] {
- this.ribbonTabItemGroup1});
- this.ribbonControl1.TabGroupsVisible = true;
- this.ribbonControl1.TabIndex = 11;
- //
- // ribbonPanel1
- //
- this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.Office2007;
- this.ribbonPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ribbonPanel1.DockPadding.Bottom = 3;
- this.ribbonPanel1.DockPadding.Left = 3;
- this.ribbonPanel1.DockPadding.Right = 3;
- this.ribbonPanel1.Location = new System.Drawing.Point(0, 48);
- this.ribbonPanel1.Name = "ribbonPanel1";
- this.ribbonPanel1.Size = new System.Drawing.Size(172, 0);
- this.ribbonPanel1.TabIndex = 1;
- //
- // LabselfName
- //
- this.LabselfName.Checked = true;
- this.LabselfName.Name = "LabselfName";
- this.LabselfName.Panel = this.ribbonPanel1;
- this.LabselfName.Text = "正在登录...";
- this.LabselfName.TextChanged += new System.EventHandler(this.LabselfName_TextChanged);
- //
- // butMenuMain
- //
- this.butMenuMain.Image = ((System.Drawing.Image)(resources.GetObject("butMenuMain.Image")));
- this.butMenuMain.Name = "butMenuMain";
- this.butMenuMain.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
- this.butSendMsg,
- this.butSendFile,
- this.butOpenShared,
- this.butMeState,
- this.butMsgSendGourp,
- this.butMsgMis,
- this.butForFormSetting,
- this.buttonItemClose,
- this.butMenuMainExit,
- this.ButAbout});
- this.butMenuMain.Text = "buttonItem1";
- this.butMenuMain.PopupClose += new System.EventHandler(this.butMenuMain_PopupClose);
- //
- // butSendMsg
- //
- this.butSendMsg.Name = "butSendMsg";
- this.butSendMsg.Text = "发送消息(&M)";
- this.butSendMsg.Visible = false;
- this.butSendMsg.Click += new System.EventHandler(this.butSendMsg_Click);
- //
- // butSendFile
- //
- this.butSendFile.Name = "butSendFile";
- this.butSendFile.Text = "发送文件(&F)";
- this.butSendFile.Visible = false;
- this.butSendFile.Click += new System.EventHandler(this.butSendFile_Click);
- //
- // butOpenShared
- //
- this.butOpenShared.Name = "butOpenShared";
- this.butOpenShared.Text = "打开收件箱";
- this.butOpenShared.Visible = false;
- this.butOpenShared.Click += new System.EventHandler(this.butOpenShared_Click);
- //
- // butMeState
- //
- this.butMeState.BeginGroup = true;
- this.butMeState.Image = ((System.Drawing.Image)(resources.GetObject("butMeState.Image")));
- this.butMeState.Name = "butMeState";
- this.butMeState.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
- this.buttonItemState1,
- this.buttonItemState2,
- this.buttonItemState3,
- this.buttonItemState4,
- this.buttonItemState5,
- this.buttonItemState6});
- this.butMeState.Text = "我的状态";
- //
- // buttonItemState1
- //
- this.buttonItemState1.Checked = true;
- this.buttonItemState1.Name = "buttonItemState1";
- this.buttonItemState1.Text = "联机";
- this.buttonItemState1.Click += new System.EventHandler(this.buttonItemState1_Click);
- //
- // buttonItemState2
- //
- this.buttonItemState2.Name = "buttonItemState2";
- this.buttonItemState2.Text = "忙碌";
- this.buttonItemState2.Click += new System.EventHandler(this.buttonItemState2_Click);
- //
- // buttonItemState3
- //
- this.buttonItemState3.Name = "buttonItemState3";
- this.buttonItemState3.Text = "接听电话";
- this.buttonItemState3.Click += new System.EventHandler(this.buttonItemState3_Click);
- //
- // buttonItemState4
- //
- this.buttonItemState4.Name = "buttonItemState4";
- this.buttonItemState4.Text = "离开";
- this.buttonItemState4.Click += new System.EventHandler(this.buttonItemState4_Click);
- //
- // buttonItemState5
- //
- this.buttonItemState5.Name = "buttonItemState5";
- this.buttonItemState5.Text = "外出就餐";
- this.buttonItemState5.Click += new System.EventHandler(this.buttonItemState5_Click);
- //
- // buttonItemState6
- //
- this.buttonItemState6.Name = "buttonItemState6";
- this.buttonItemState6.Text = "脱机";
- this.buttonItemState6.Visible = false;
- //
- // butMsgSendGourp
- //
- this.butMsgSendGourp.BeginGroup = true;
- this.butMsgSendGourp.Image = ((System.Drawing.Image)(resources.GetObject("butMsgSendGourp.Image")));
- this.butMsgSendGourp.Name = "butMsgSendGourp";
- this.butMsgSendGourp.Text = "群发消息";
- this.butMsgSendGourp.Click += new System.EventHandler(this.butMsgSendGourp_Click);
- //
- // butMsgMis
- //
- this.butMsgMis.Icon = ((System.Drawing.Icon)(resources.GetObject("butMsgMis.Icon")));
- this.butMsgMis.Name = "butMsgMis";
- this.butMsgMis.Text = "信息管理器";
- this.butMsgMis.Click += new System.EventHandler(this.butMsgMis_Click);
- //
- // butForFormSetting
- //
- this.butForFormSetting.Image = ((System.Drawing.Image)(resources.GetObject("butForFormSetting.Image")));
- this.butForFormSetting.Name = "butForFormSetting";
- this.butForFormSetting.Text = "设置";
- this.butForFormSetting.Visible = false;
- //
- // buttonItemClose
- //
- this.buttonItemClose.Name = "buttonItemClose";
- this.buttonItemClose.Text = "关闭";
- this.buttonItemClose.Visible = false;
- //
- // butMenuMainExit
- //
- this.butMenuMainExit.Name = "butMenuMainExit";
- this.butMenuMainExit.Text = "退出";
- this.butMenuMainExit.Visible = false;
- this.butMenuMainExit.Click += new System.EventHandler(this.butMenuMainExit_Click);
- //
- // ButAbout
- //
- this.ButAbout.BeginGroup = true;
- this.ButAbout.Name = "ButAbout";
- this.ButAbout.Text = "关于";
- this.ButAbout.Click += new System.EventHandler(this.ButAbout_Click);
- //
- // ribbonTabItemGroup1
- //
- this.ribbonTabItemGroup1.Color = DevComponents.DotNetBar.eRibbonTabGroupColor.Orange;
- this.ribbonTabItemGroup1.GroupTitle = "Tab Group";
- //
- // ribbonTabItemGroup1.Style
- //
- this.ribbonTabItemGroup1.Style.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(240)), ((System.Byte)(158)), ((System.Byte)(159)));
- this.ribbonTabItemGroup1.Style.BackColor2 = System.Drawing.Color.FromArgb(((System.Byte)(249)), ((System.Byte)(225)), ((System.Byte)(226)));
- this.ribbonTabItemGroup1.Style.BackColorGradientAngle = 90;
- this.ribbonTabItemGroup1.Style.BorderBottom = DevComponents.DotNetBar.eStyleBorderType.Solid;
- this.ribbonTabItemGroup1.Style.BorderBottomWidth = 1;
- this.ribbonTabItemGroup1.Style.BorderColor = System.Drawing.Color.FromArgb(((System.Byte)(154)), ((System.Byte)(58)), ((System.Byte)(59)));
- this.ribbonTabItemGroup1.Style.BorderLeft = DevComponents.DotNetBar.eStyleBorderType.Solid;
- this.ribbonTabItemGroup1.Style.BorderLeftWidth = 1;
- this.ribbonTabItemGroup1.Style.BorderRight = DevComponents.DotNetBar.eStyleBorderType.Solid;
- this.ribbonTabItemGroup1.Style.BorderRightWidth = 1;
- this.ribbonTabItemGroup1.Style.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Solid;
- this.ribbonTabItemGroup1.Style.BorderTopWidth = 1;
- this.ribbonTabItemGroup1.Style.TextAlignment = DevComponents.DotNetBar.eStyleTextAlignment.Center;
- this.ribbonTabItemGroup1.Style.TextColor = System.Drawing.Color.Black;
- this.ribbonTabItemGroup1.Style.TextLineAlignment = DevComponents.DotNetBar.eStyleTextAlignment.Near;
- //
- // imageList1
- //
- this.imageList1.ImageSize = new System.Drawing.Size(16, 16);
- this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
- this.imageList1.TransparentColor = System.Drawing.Color.White;
- //
- // panel1
- //
- this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
- this.panel1.Location = new System.Drawing.Point(2, 48);
- this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(4, 277);
- this.panel1.TabIndex = 12;
- //
- // panel2
- //
- this.panel2.Dock = System.Windows.Forms.DockStyle.Right;
- this.panel2.Location = new System.Drawing.Point(170, 48);
- this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(4, 277);
- this.panel2.TabIndex = 13;
- //
- // panel3
- //
- this.panel3.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
- this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
- this.panel3.Location = new System.Drawing.Point(6, 48);
- this.panel3.Name = "panel3";
- this.panel3.Size = new System.Drawing.Size(164, 4);
- this.panel3.TabIndex = 14;
- //
- // TvUsers
- //
- this.TvUsers.BackColor = System.Drawing.Color.White;
- this.TvUsers.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.TvUsers.Dock = System.Windows.Forms.DockStyle.Fill;
- this.TvUsers.ImageIndex = 14;
- this.TvUsers.ImageList = this.imageList1;
- this.TvUsers.ItemHeight = 20;
- this.TvUsers.Location = new System.Drawing.Point(6, 52);
- this.TvUsers.Name = "TvUsers";
- this.TvUsers.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("部门(0/0)"),
- new System.Windows.Forms.TreeNode("未知(0/0)")});
- this.TvUsers.SelectedImageIndex = 15;
- this.TvUsers.ShowLines = false;
- this.TvUsers.ShowRootLines = false;
- this.TvUsers.Size = new System.Drawing.Size(164, 273);
- this.TvUsers.TabIndex = 27;
- this.TvUsers.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.TvUsers_AfterCheck);
- this.TvUsers.DoubleClick += new System.EventHandler(this.TvUsers_DoubleClick);
- this.TvUsers.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.TvUsers_AfterSelect);
- this.TvUsers.MouseMove += new System.Windows.Forms.MouseEventHandler(this.TvUsers_MouseMove);
- //
- // imageListFace
- //
- this.imageListFace.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
- this.imageListFace.ImageSize = new System.Drawing.Size(20, 20);
- this.imageListFace.TransparentColor = System.Drawing.Color.White;
- //
- // timerCheckOnlinState
- //
- this.timerCheckOnlinState.Interval = 56000;
- this.timerCheckOnlinState.Tick += new System.EventHandler(this.timerCheckOnlinState_Tick);
- //
- // sockUDP1
- //
- this.sockUDP1.Server = ((System.Net.IPEndPoint)(resources.GetObject("sockUDP1.Server")));
- this.sockUDP1.DataArrival += new LanMsg.Controls.SockUDP.DataArrivalEventHandler(this.sockUDP1_DataArrival);
- //
- // NotifyIcon
- //
- this.NotifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("NotifyIcon.Icon")));
- this.NotifyIcon.Text = "LanMsg";
- this.NotifyIcon.Visible = true;
- this.NotifyIcon.Click += new System.EventHandler(this.NotifyIcon_Click);
- //
- // FormMain
- //
- this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
- this.BackColor = System.Drawing.SystemColors.Control;
- this.ClientSize = new System.Drawing.Size(176, 344);
- this.Controls.Add(this.TvUsers);
- this.Controls.Add(this.panel3);
- this.Controls.Add(this.panel2);
- this.Controls.Add(this.panel1);
- this.Controls.Add(this.ribbonControl1);
- this.Controls.Add(this.bar1);
- this.DockPadding.Bottom = 2;
- this.DockPadding.Left = 2;
- this.DockPadding.Right = 2;
- this.DockPadding.Top = 2;
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MinimumSize = new System.Drawing.Size(160, 344);
- this.Name = "FormMain";
- this.Opacity = 0;
- this.ShowInTaskbar = false;
- this.Text = "设计院LanMsg";
- this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
- this.Closing += new System.ComponentModel.CancelEventHandler(this.FormMain_Closing);
- this.SizeChanged += new System.EventHandler(this.FormMain_SizeChanged);
- this.Load += new System.EventHandler(this.FormMain_Load);
- ((System.ComponentModel.ISupportInitialize)(this.bar1)).EndInit();
- this.ribbonControl1.ResumeLayout(false);
- this.ResumeLayout(false);
- }
- #endregion
- private void sockUDP1_DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port)
- {
- DataArrivaldelegate outdelegate = new DataArrivaldelegate( DataArrival);
- this.BeginInvoke (outdelegate, new object[]{ Data,Ip,Port});
- }
- private delegate void DataArrivaldelegate(byte[] Data, System.Net.IPAddress Ip, int Port);
- private void DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port)
- {
- LanMsg.Controls.ClassMsg msg=new ClassSerializers().DeSerializeBinary((new System.IO.MemoryStream(Data))) as LanMsg.Controls.ClassMsg;
- switch(msg.MsgInfoClass)
- {
- case 0://有用户离线
- userSingnOut(msg.ID );//处理用户离线
- break;
- case 1://服务器告诉自己已经登录,登录过程
- SuccessLogin(msg);
- break;
- case 2://服务器告诉用户自己目前在线
- updateSelfState();//更新当前用户在线状态
- break;
- case 3://服务器告诉用户有新的联系人登录
- NewUserLogin(new ClassSerializers().DeSerializeBinary((new System.IO.MemoryStream(msg.MsgContent ))) as ClassUserInfo );//添加新登录的用户资料
- break;
- case 4://收到用户部分联系人的资料
- UsersDataArrival((new ClassSerializers().DeSerializeBinary((new System.IO.MemoryStream(msg.MsgContent ))) as Controls.ClassUsers));//收到用户所有联系人的资料
- break;
- case 5://收到用户联系人发送来的对话消息
- UserChatArrival(msg,Ip,Port);//处理对话消息
- break;
- case 6://联系人返回已经收到刚才发送的对话消息
- returnChatArrival(msg.ID );//联系人返回已经收到刚才发送的对话消息
- break;
- case 7:
- //收到联系人发送来的群发通知消息
- noticeArrival(msg,Ip,Port);//处理联系人发送来的群发通知消息
- break;
- case 8://对方要求UDP打洞
- UDPNatTranslators(msg,Ip,Port);
- break;
- case 10://收到联系人发出发送文件请求
- sendFileRequest(msg,Ip,Port);
- break;
- case 11://收到联系人发送来的gif图片流
- UserGifArrival(msg,Ip,Port);//处理gif图片消息
- break;
- case 12://收到用户发送来的文本消息
- UserTextChatArrival(msg,Ip,Port);//处理用户发送来的文本消息
- break;
- case 13://收到视频对话请求
- //MessageBox.Show("视频对话请求"+ Ip.ToString() +":"+ Port.ToString());
- UserAVRequestArrival(msg,Ip,Port);
- break;
- case 14://对方告诉自己开始视频对话
- //MessageBox.Show("开始视频对话"+ Ip.ToString() +":"+ Port.ToString());
- UserBeginAV(msg,Ip,Port);
- break;
- case 15://对方已经取消息视频对话
- CancelAV(msg.ID );//取消视频对话
- break;
- case 16://服务器通知升级到最新版本的LanMsg
- update();
- break;
- }
- }
- private void update()
- {
- LanMsg.FormUpdate f=new FormUpdate();
- f.ShowDialog(this);
- }
- private void CancelAV(string userID)//对方已经取消息视频对话,取消视频对话
- {
- ClassUserInfo userinfo =this.findUser(userID);
- if (userinfo!=null)
- {
- foreach(System.Windows.Forms.Form form in forms)
- if (form.Tag.ToString() == userinfo.ID )
- {
- FormSendMsg f=(form as FormSendMsg );
- f.CancelAV();
- f.Activate ();
- return;
- }
- }
- }
- private void UserBeginAV(LanMsg.Controls.ClassMsg msg, System.Net.IPAddress Ip, int Port)//对方要求立即进行视频对话
- {
- ClassUserInfo userinfo =this.findUser(msg.ID);
- if (userinfo!=null)
- {
- foreach(System.Windows.Forms.Form form in forms)
- if (form.Tag.ToString() == userinfo.ID )
- {
- FormSendMsg f=(form as FormSendMsg );
- f.BeginAV(Ip,Port);
- f.Activate ();
- return;
- }
- }
- }
-
- private void UDPNatTranslators(LanMsg.Controls.ClassMsg msg, System.Net.IPAddress Ip, int Port)//对方要求UDP打洞
- {
- LanMsg.ClassUserInfo userinfo=this.findUser(msg.ID );
- if(userinfo!=null)
- {
- userinfo.IP=Ip;
- userinfo.Port=Port;
- }
- }
- private void UserAVRequestArrival(LanMsg.Controls.ClassMsg msg, System.Net.IPAddress Ip, int Port)//收到视频聊天请求
- {
- ClassUserInfo userinfo =this.findUser(msg.ID);
- if (userinfo!=null)
- {
- string title= userinfo.UserName +"("+ System.DateTime.Now.ToString() +")";
- foreach(System.Windows.Forms.Form form in forms)
- if (form.Tag.ToString() == userinfo.ID )
- {
- FormSendMsg f=(form as FormSendMsg );
- f.AVrequest(Ip,Port);
- f.Activate ();
- return;
- }
- FormSendMsg newf =new FormSendMsg();
- newf.Tag=msg.ID;
- newf.Text="与 "+ userinfo.UserName+"("+userinfo.ID+") 对话";
- forms.add(newf);
- newf.AVrequest(Ip,Port);
- ShowNotifyIcon(1,"","收到 "+userinfo.UserName +"("+ userinfo.ID +") 发送给您的视频对话请求,您可以接收或取消视频对话。");
- newf.Show();
- }
- }
- private void UserTextChatArrival(LanMsg.Controls.ClassMsg msg, System.Net.IPAddress Ip, int Port)//处理用户发送来的文本消息
- {
- ClassUserInfo userinfo =this.findUser(msg.ID);
- if (userinfo!=null)
- {
- string title= userinfo.UserName +"("+ System.DateTime.Now.ToString() +")";
- foreach(System.Windows.Forms.Form form in forms)
- if (form.Tag.ToString() == userinfo.ID )
- {
- FormSendMsg f=(form as FormSendMsg );
- f.newTextMsg(msg.MsgContent,title,new System.Drawing.Font("宋体",10), Color.Blue);
- f.Activate ();
- return;
- }
- FormSendMsg newf =new FormSendMsg();
- newf.Tag=msg.ID;
- newf.Text="与 "+ userinfo.UserName+"("+userinfo.ID+") 对话";
- newf.newTextMsg(msg.MsgContent,title,new System.Drawing.Font("宋体",10),Color.Blue );
- forms.add(newf);
- ShowNotifyIcon(1,"","收到 "+userinfo.UserName +"("+ userinfo.ID +") 发送给您的新消息。");
- newf.Show();
- }
- }
- private void UserGifArrival(LanMsg.Controls.ClassMsg msg, System.Net.IPAddress Ip, int Port)//处理gif图片消息
- {
- ClassUserInfo userinfo =this.findUser(msg.ID);
- if (userinfo!=null)
- {
- this.sendMsgToOneUser(new LanMsg.Controls.ClassMsg(6,selfInfo.ID,null),userinfo.IP,userinfo.Port );//告诉发消息的联系人已经收到发送的消息
- string title= userinfo.UserName +"("+ System.DateTime.Now.ToString() +")";
- //MsgAddToDB(msgRtf,msg.ID,selfInfo.ID,msg.AssemblyVersion,System.DateTime.Now.ToString(),true);//将消息添加进数据库
- foreach(System.Windows.Forms.Form form in forms)
- if (form.Tag.ToString() == userinfo.ID )
- {
- FormSendMsg f=(form as FormSendMsg );
- f.newMsg(msg.MsgContent,title,new System.Drawing.Font("宋体",10), Color.Blue);
- f.Activate ();
- return;
- }
- FormSendMsg newf =new FormSendMsg();
- newf.Tag=msg.ID;
- newf.Text="与 "+ userinfo.UserName+"("+userinfo.ID+") 对话";
- newf.newMsg(msg.MsgContent,title,new System.Drawing.Font("宋体",10),Color.Blue );
- forms.add(newf);
- ShowNotifyIcon(1,"","收到 "+userinfo.UserName +"("+ userinfo.ID +") 发送给您的新消息。");
- newf.Show();
- }
- }
- private void sendFileRequest(LanMsg.Controls.ClassMsg msg,System.Net.IPAddress Ip, int Port) //处理联系人发送接收文件要求
- {
- ClassUserInfo userinfo =this.findUser(msg.ID);
- if (userinfo!=null)
- {
- string[] fileInfo= System.Text.Encoding.Unicode.GetString (msg.MsgContent).Split('|');
- ShowNotifyIcon(1,"",userinfo.UserName +"("+ userinfo.ID +") 要求发送文件给您,请接收或拒绝。");
- foreach(System.Windows.Forms.Form form in forms)
- if (form.Tag.ToString() == userinfo.ID )
- {
- FormSendMsg f=(form as FormSendMsg );
- f.ReceiveFileRequest(fileInfo[0].ToString(),fileInfo[1].ToString(),Convert.ToInt64(fileInfo[2]),Ip,Port);
- f.Activate ();
- return;
- }
- FormSendMsg newf =new FormSendMsg();
- newf.Tag=msg.ID;
- newf.Text="与 "+ userinfo.UserName+"("+userinfo.ID+") 对话";
- newf.ReceiveFileRequest(fileInfo[0].ToString(),fileInfo[1].ToString(),Convert.ToInt64(fileInfo[2]),Ip,Port);
- forms.add(newf);
- newf.Show();
- }
- }
- private void noticeArrival(LanMsg.Controls.ClassMsg msg,System.Net.IPAddress Ip, int Port) //处理联系人发送来的群发通知消息
- {
- ClassUserInfo userinfo =this.findUser(msg.ID);
- if (userinfo!=null)
- {
- string msgContent=System.Text.Encoding.Unicode.GetString(msg.MsgContent);
- MsgAddToDB(msgContent,msg.ID,selfInfo.ID,msg.AssemblyVersion ,System.DateTime.Now.ToString(),"",false);//将消息添加进数据库
- LanMsg.FormNotice nt=new FormNotice();
- nt.RTBNoticeContent.AppendText(msgContent);
- nt.RTBNoticeContent.AppendText("n发布:"+userinfo.UserName +"("+ userinfo.ID +")");
- ShowNotifyIcon(3,"通知-消息","收到 "+userinfo.UserName +"("+ userinfo.ID +") 发布的设计院 通知-消息");
- nt.Show();
- }
- }
- private void returnChatArrival(string ID ) //联系人返回已经收到刚才发送的对话消息
- {
- ClassUserInfo userinfo =this.findUser(ID);
- if (userinfo!=null)
- userinfo.SendIsSuccess=true;//标识刚才发送的消息联系人已经成功收到
- }
- private void UserChatArrival(LanMsg.Controls.ClassMsg msg, System.Net.IPAddress Ip, int Port)//处理对话消息
- {
- ClassUserInfo userinfo =this.findUser(msg.ID);
- if (userinfo!=null)
- {
- this.sendMsgToOneUser(new LanMsg.Controls.ClassMsg(6,selfInfo.ID,null),userinfo.IP,userinfo.Port );//告诉发消息的联系人已经收到发送的消息
- string title= userinfo.UserName +"("+ System.DateTime.Now.ToString() +")";
- string msgRtf=System.Text.Encoding.Unicode.GetString(msg.MsgContent);
- // MsgAddToDB(msgRtf,msg.ID,selfInfo.ID,msg.AssemblyVersion,System.DateTime.Now.ToString(),true);//将消息添加进数据库
- foreach(System.Windows.Forms.Form form in forms)
- if (form.Tag.ToString() == userinfo.ID )
- {
- FormSendMsg f=(form as FormSendMsg );
- f.newMsg(msgRtf,title,new System.Drawing.Font("宋体",10), Color.Blue);
- f.Activate ();
- return;
- }
- FormSendMsg newf =new FormSendMsg();
- newf.Tag=msg.ID;
- newf.Text="与 "+ userinfo.UserName+"("+userinfo.ID+") 对话";
- newf.newMsg(msgRtf,title,new System.Drawing.Font("宋体",10),Color.Blue );
- forms.add(newf);
- ShowNotifyIcon(1,"","收到 "+userinfo.UserName +"("+ userinfo.ID +") 发送给您的新消息。");
- newf.Show();
- }
- }
- private void NewUserLogin(ClassUserInfo userinfo)//添加新登录的用户资料
- {
- // if(userinfo.ID==selfInfo.ID )
- // return;//如果新登录的联系人是自己则退出
- ClassUserInfo UserInfo;
- UserInfo=findUser(userinfo.ID);
- if(UserInfo==null )
- {
- userinfo.Node=new TreeNode();
- this.TvUsers.Nodes[userinfo.Dep].Nodes.Add(userinfo.Node);
- this.MyUsers.add(userinfo);
- userinfo.State =userinfo.State ;
- userinfo.Dep =userinfo.Dep ;
- userinfo.ID=userinfo.ID;
- }
- else
- {
- UserInfo.ID=userinfo.ID;
- UserInfo.Dep=userinfo.Dep;
- UserInfo.State =userinfo.State;
- UserInfo.IP=userinfo.IP ;
- UserInfo.Port=userinfo.Port;
- UserInfo.UserName =userinfo.UserName;
- UserInfo.AssemblyVersion=userinfo.AssemblyVersion;
- }
- updateGroupInfo();//更新部门成员上线与未上线的数据
- }
- private void updateSelfState()//更新当前用户在线状态
- {
- selfInfo.State =OnlineState;//将自己的在线状态设置为非0表示在线
- this.LabselfName.Text=selfInfo.UserName + selfInfo.StateInfo ;
- this.LabselfName.Refresh();
- }
- private void userSingnOut(string ID) //处理用户离线
- {
- ClassUserInfo userinfo=this.findUser(ID);
- if(userinfo!=null)
- {
- int GroupIndex=userinfo.Dep ;
- if (userinfo.Dep==10)//如果用户在未知组
- {
- userinfo.Node.Parent.Nodes.Remove(userinfo.Node);
- this.MyUsers.Romove(userinfo);//在用户列表中删除未知组的此离线用户
- }
- else
- {
- userinfo.State=0;//标识用户已经离线
- }
- updateGroupInfo();//更新部门成员上线与未上线的数据
- }
- }
-
- private void UsersDataArrival(Controls.ClassUsers users)//收到用户所有联系人的资料
- {
- ClassUserInfo UserInfo;
- foreach(ClassUserInfo userinfo in users)
- {
- UserInfo=findUser(userinfo.ID);
- if(UserInfo==null)
- {
- userinfo.Node=new TreeNode();
- this.TvUsers.Nodes[userinfo.Dep].Nodes.Add(userinfo.Node);
- this.MyUsers.add(userinfo);
- userinfo.ID=userinfo.ID;
- userinfo.State =userinfo.State ;
- userinfo.Dep=userinfo.Dep;
- //updateGroupInfo(userinfo);
- }
- }
- updateGroupInfo();//更新部门成员上线与未上线的数据
- }
- private void updateGroupInfo()//更新部门成员上线与未上线的数据
- {
- int Online=0;
- for(int i=0;i<this.TvUsers.Nodes.Count;i++)
- {
- for(int j=0;j<this.TvUsers.Nodes[i].Nodes.Count;j++)
- if(this.TvUsers.Nodes[i].Nodes[j].Text.IndexOf("(脱机)")==-1)
- Online++;
- this.TvUsers.Nodes[i].Text=Convert.ToString(this.TvUsers.Nodes[i].Tag) +"("+Online.ToString() +"/"+this.TvUsers.Nodes[i].Nodes.Count.ToString() +")";
- Online=0;
- }
- }
- private void updateGroupInfo(LanMsg.ClassUserInfo userinfo)//更新部门成员上线与未上线的数据
- {
- int Online=0;
- int userCount=0;
- foreach(ClassUserInfo TempUserinfo in this.MyUsers)
- if(TempUserinfo.Dep==userinfo.Dep )
- {
- userCount++;
- if(TempUserinfo.State!=0) Online++;
- }
- userinfo.Node.Parent.Text=Convert.ToString(userinfo.Node.Parent.Tag)+"("+Online.ToString() +"/"+userCount.ToString()+")";
- }
- public ClassUserInfo findUser(string ID)//在我的用户列表中查找用户ID
- {
- foreach(ClassUserInfo userinfo in this.MyUsers)
- if(userinfo.ID.ToLower()==ID.ToLower())
- return userinfo;
- return null;
- }
- private void SuccessLogin(LanMsg.Controls.ClassMsg msg)//服务器告诉用户已经成功登录的处理过程
- {
- //this.Text="成功登陆";
- ClassUserInfo self=(new ClassSerializers().DeSerializeBinary (new System.IO.MemoryStream(msg.MsgContent ))) as ClassUserInfo;
- selfInfo.UserName =self.UserName;
- selfInfo.State =1;
- this.LabselfName.Text=selfInfo.UserName +"(联机)";
- this.LabselfName.Refresh();
- //ShowNotifyIcon(1,"","LanMsg已经成功登录服务器。");
- }
- private void TvUsers_DoubleClick(object sender, System.EventArgs e)
- {
- ActivateOrCreateFormSend();
- }
- private void ActivateOrCreateFormSend()//激活或创建新的消息发送窗体
- {
- if(this.TvUsers.SelectedNode.Parent!=null)
- {
- foreach(System.Windows.Forms.Form fo in forms)
- if (fo.Tag == this.TvUsers.SelectedNode.Tag)
- {
- fo.Activate ();return;
- }
- FormSendMsg f =new FormSendMsg();
- forms.add(f);
- LanMsg.ClassUserInfo userinfo=this.findUser( this.TvUsers.SelectedNode.Tag.ToString());
- if(userinfo!=null)
- f.Text="与 "+ userinfo.UserName+"("+userinfo.ID+") 对话";
- f.Tag=this.TvUsers.SelectedNode.Tag;
- f.Show();
- }
- }
-
- private void FormMain_Load(object sender, System.EventArgs e)
- {
- this.Left=Screen.PrimaryScreen.WorkingArea.Width -this.Width;
- this.Top=200;
- BeginListen();
- }
-
- private void BeginListen()//
- {
- //AssemblyName assName = Assembly.GetExecutingAssembly().GetName();
- //string version = assName.Version.ToString();
- //System.Diagnostics.FileVersionInfo fInfo=new System.Diagnostics.FileVersionInfo();
- System.Random i =new Random();
- int j= i.Next(2000,6000);
- this.sockUDP1.Listen (j);//UDP开始侦听来自外部的消息.
- selfInfo.Port=j;
- selfInfo.ID=System.Net.Dns.GetHostName()+ j.ToString();//
- System.Reflection.AssemblyName assName = System.Reflection.Assembly.GetExecutingAssembly().GetName();
- selfInfo.AssemblyVersion = assName.Version.ToString();
- System.Threading.Thread.Sleep(3000);
- Login();//用户登录
- this.timerCheckOnlinState.Enabled=true;
- }
- private void butMenuMainExit_Click(object sender, System.EventArgs e)
- {
- AppExit();
- }
- private void FormMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
- {
- if(!IsWindowsExit)
- {
- this.WindowState=System.Windows.Forms.FormWindowState.Minimized;
- this.Hide();
- e.Cancel=true;
- }
- }
- private void AppExit()//关闭Sock,退出程序
- {
- this.sockUDP1.CloseSock();
- Application.Exit();
- }
- private void Login()//用户登录
- {
- this.LabselfName.Text="正在登录...";
- LanMsg.Controls.ClassMsg msg=new LanMsg.Controls.ClassMsg(1,selfInfo.ID,System.Text.Encoding.Unicode.GetBytes(selfInfo.AssemblyVersion));
- sendMsgToServer(msg);
- }
- private void timerCheckOnlinState_Tick(object sender, System.EventArgs e)//检测自己的在线状态
- {
- CheckOnlineState();//检测自己的在线状态
-
- foreach(LanMsg.ClassUserInfo userinfo in this.MyUsers)//向对方打洞
- if(userinfo.State!=0)
- this.sendMsgToOneUser(new Controls.ClassMsg(8,this.selfInfo.ID,null),userinfo.IP,userinfo.Port);//向对方打洞
- }
-
- private int OnlineState=1;
- private void CheckOnlineState()//检测自己的在线状态
- {
- if(selfInfo.State ==0)//如果没有登录,则登录
- {
- Login();
- }
- else//如果已经登录在线,则将自己设为脱机状态,然后向服务器发送消息告之自已在线状态
- {
- OnlineState=selfInfo.State;
- selfInfo.State=0;
- LanMsg.Controls.ClassMsg msg=new LanMsg.Controls.ClassMsg(2,selfInfo.ID,System.Text.Encoding.Unicode.GetBytes(OnlineState.ToString()));
- sendMsgToServer(msg);
- }
- }
- public void sendMsgToServer(Controls.ClassMsg msg)//发送消息到服务器
- {
- this.sockUDP1.Send(this.ServerIP,this.ServerPort,new ClassSerializers().SerializeBinary(msg).ToArray());
- }
- public void sendMsgToOneUser(Controls.ClassMsg msg,System.Net.IPAddress Ip, int Port)//发送消息到用户的一个联系人
- {
- msg.ID=selfInfo.ID;//标识本人的ID号
- this.sockUDP1.Send(Ip,Port,new ClassSerializers().SerializeBinary(msg).ToArray());
- }
- private void TvUsers_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
- {
- foreach(System.Windows.Forms.TreeNode nd in e.Node.Nodes)
- nd.Checked=e.Node.Checked;
- }
- private void butMsgSendGourp_Click(object sender, System.EventArgs e)
- {
- foreach(System.Windows.Forms.Form form in forms)
- if( form is LanMsg.FormNotice )
- {
- form.Activate();
- return;
- }
- FormSendMsgGroup fSendMsgGroup=new FormSendMsgGroup();
- fSendMsgGroup.Tag="Notice";
- forms.add(fSendMsgGroup);
- fSendMsgGroup.Show ();
- this.TvUsers.CheckBoxes=true;
- }
-
- public void sendMsgToOneUser(Controls.ClassMsg msg,string userID)//发送消息到用户的一个联系人
- {
- msg.ID=selfInfo.ID;//标识本人的ID号
- ClassUserInfo userinfo=this.findUser(userID);
- if(userinfo!=null)
- this.sockUDP1.Send(userinfo.IP ,userinfo.Port ,new ClassSerializers().SerializeBinary(msg).ToArray());
- }
- private void sendMsgToAllUser(Controls.ClassMsg msg)//发送通知消息(群发)
- {
- msg.ID=selfInfo.ID;//标识本人的ID号
- foreach(ClassUserInfo userinfo in this.MyUsers )
- {
- this.sockUDP1.Send(userinfo.IP ,userinfo.Port ,new ClassSerializers().SerializeBinary(msg).ToArray());
- }
- }
- public void sendNotice(Controls.ClassMsg msg)//发送通知消息(群发)
- {
- msg.ID=selfInfo.ID;//标识本人的ID号
- foreach(ClassUserInfo userinfo in this.MyUsers )
- {
- if(userinfo.Node.Checked)
- this.sockUDP1.Send(userinfo.IP ,userinfo.Port ,new ClassSerializers().SerializeBinary(msg).ToArray());
- }
- }
- private System.Drawing.Point point=new Point(0,0);
- private void TvUsers_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
- {
- if(e.Node.Parent==null)
- {
- foreach(System.Windows.Forms.TreeNode nd in this.TvUsers.Nodes)
- nd.Collapse();
- e.Node.Expand();
- }
- else
- {
- this.butSendMsg.Visible=true;
- this.butSendFile.Visible=true;
- this.butOpenShared.Visible=true;
- this.butOpenShared.Tag=e.Node.Tag;
- this.butSendFile.Tag=e.Node.Tag;
- butMenuMain.PopupMenu(this.Left + this.point.X+10 ,this.Top + this.point.Y+50 );
- }
- }
- private void LabselfName_TextChanged(object sender, System.EventArgs e)
- {
- this.NotifyIcon.Text=this.LabselfName.Text;
- }
- private void butMsgMis_Click(object sender, System.EventArgs e)
- {
- OpenMsgMis("");//打开消息管理器
- }
-
- public void OpenMsgMis(string OpenID)//打开消息管理器
- {
- foreach(System.Windows.Forms.Form form in forms)
- if (form is LanMsg.FormMsgMis)
- {
- LanMsg.FormMsgMis f=(form as LanMsg.FormMsgMis);
- f.Activate ();
- f.selectID(OpenID);
- return;
- }
- FormMsgMis fr=new FormMsgMis();
- this.forms.add(fr);
- fr.Show();
- fr.Activate();
- fr.selectID(OpenID);
- }
- #region 添加记录到数据库
- public void MsgAddToDB(string msgContent,string sendID,string ReceiveID,string AssemblyVersion,string msgDateTime,string ImageInfo,bool IsNotNotice)//添加用户对话消息到数据库
- {
- try
- {
- string DBtable="Notice";
- if(IsNotNotice)
- {
- DBtable="MsgRecord";
- }
- System.Data.OleDb.OleDbConnection connection=new System.Data.OleDb.OleDbConnection(new ClassFormMain().ConStr);
-
- System.Data.OleDb.OleDbCommand command=new System.Data.OleDb.OleDbCommand("INSERT INTO ["+DBtable+"](msgContent,sendID,ReceiveID,AssemblyVersion,msgDateTime,ImageInfo) VALUES( @msgContent,@sendID,@ReceiveID ,@AssemblyVersion,@msgDateTime,@ImageInfo)", connection );
-
- System.Data.OleDb.OleDbParameter paramMsgContent =new System.Data.OleDb.OleDbParameter("@msgContent",System.Data.OleDb.OleDbType.LongVarChar);
- paramMsgContent.Value = msgContent;
- command.Parameters.Add(paramMsgContent);
- System.Data.OleDb.OleDbParameter paramSendID=new System.Data.OleDb.OleDbParameter("@sendID",System.Data.OleDb.OleDbType.Char);
- paramSendID.Value = sendID;
- command.Parameters.Add(paramSendID);
- System.Data.OleDb.OleDbParameter paramReceiveID=new System.Data.OleDb.OleDbParameter("@ReceiveID",System.Data.OleDb.OleDbType.Char);
- paramReceiveID.Value = ReceiveID;
- command.Parameters.Add(paramReceiveID);
- System.Data.OleDb.OleDbParameter paramAssemblyVersion=new System.Data.OleDb.OleDbParameter("@AssemblyVersion",System.Data.OleDb.OleDbType.Char);
- paramAssemblyVersion.Value = AssemblyVersion;
- command.Parameters.Add(paramAssemblyVersion);
-
- System.Data.OleDb.OleDbParameter paramMsgDateTime=new System.Data.OleDb.OleDbParameter("@msgDateTime",System.Data.OleDb.OleDbType.DBTimeStamp);
- paramMsgDateTime.Value =msgDateTime;
- command.Parameters.Add(paramMsgDateTime);
- System.Data.OleDb.OleDbParameter paramImageInfo=new System.Data.OleDb.OleDbParameter("@ImageInfo",System.Data.OleDb.OleDbType.LongVarChar);
- paramImageInfo.Value =ImageInfo;
- command.Parameters.Add(paramImageInfo);
-
- connection.Open();
-
- int numRowsAffected = command.ExecuteNonQuery();
-
- connection.Close();
- }
- catch//如果有错误发生
- {
-
- }
- }
- #endregion
- [System.Runtime.InteropServices.DllImport("user32")]
- private static extern long AnimateWindow(long hwnd, long dwTime, long dwFlags);
- [System.Runtime.InteropServices.DllImport("winmm.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto)]
- private static extern int PlaySound(string lpszSoundName, int hModule, int dwFlags);
- const int SND_FILENAME = 131072;
- const int SND_ALIAS = 65536;
- const int SND_SYNC = 0;
- private void PlaySound(string fileStr)
- {
- PlaySound(fileStr, 0, SND_FILENAME);
- }
- private void buttonItemState1_Click(object sender, System.EventArgs e)
- {
- CheckButFalse(sender);
- this.OnlineState=1;
- updateSelfState();
- }
- private void buttonItemState2_Click(object sender, System.EventArgs e)
- {
- CheckButFalse(sender);
- this.OnlineState=2;
- updateSelfState();
- }
- private void buttonItemState3_Click(object sender, System.EventArgs e)
- {
- CheckButFalse(sender);
- this.OnlineState=3;
- updateSelfState();
- }
- private void buttonItemState4_Click(object sender, System.EventArgs e)
- {
- CheckButFalse(sender);
- this.OnlineState=4;
- updateSelfState();
- }
- private void buttonItemState5_Click(object sender, System.EventArgs e)
- {
- CheckButFalse(sender);
- this.OnlineState=5;
- updateSelfState();
- }
-
- private void CheckButFalse(object sender)
- {
- buttonItemState1.Checked=false;
- buttonItemState2.Checked=false;
- buttonItemState3.Checked=false;
- buttonItemState4.Checked=false;
- buttonItemState5.Checked=false;
- (sender as DevComponents.DotNetBar.ButtonItem).Checked=true;
- }
-
- private void NotifyIcon_Click(object sender, System.EventArgs e)
- {
- this.Opacity=100;
- this.ShowInTaskbar=true;
- this.WindowState=System.Windows.Forms.FormWindowState.Normal;
- this.Show();
- this.Activate();
- this.Refresh();
- }
- private void FormMain_SizeChanged(object sender, System.EventArgs e)
- {
- }
-
- private void ShowNotifyIcon(int ShowClass,string title,string content)
- {
- if(title=="")title="新消息";
- LanMsg.CustomUIControls.TaskbarNotifier taskbarNotifier=new TaskbarNotifier();
- switch(ShowClass)
- {
- case 1:
- taskbarNotifier.SetBackgroundBitmap(new Bitmap(GetType(),"Resources.skin.bmp"),Color.FromArgb(255,0,255));
- taskbarNotifier.SetCloseBitmap(new Bitmap(GetType(),"Resources.close.bmp"),Color.FromArgb(255,0,255),new Point(127,8));
- taskbarNotifier.TitleRectangle=new Rectangle(40,9,70,25);
- taskbarNotifier.ContentRectangle=new Rectangle(8,41,133,68);
- break;
- case 2:
- taskbarNotifier.SetBackgroundBitmap(new Bitmap(GetType(),"Resources.skin2.bmp"),Color.FromArgb(255,0,255));
- taskbarNotifier.SetCloseBitmap(new Bitmap(GetType(),"Resources.close2.bmp"),Color.FromArgb(255,0,255),new Point(300,74));
- taskbarNotifier.TitleRectangle=new Rectangle(123,80,176,16);
- taskbarNotifier.ContentRectangle=new Rectangle(116,97,197,22);
- break;
- case 3:
- taskbarNotifier.SetBackgroundBitmap(new Bitmap(GetType(),"Resources.skin3.bmp"),Color.FromArgb(255,0,255));
- taskbarNotifier.SetCloseBitmap(new Bitmap(GetType(),"Resources.close.bmp"),Color.FromArgb(255,0,255),new Point(280,57));
- taskbarNotifier.TitleRectangle=new Rectangle(150, 57, 125, 28);
- taskbarNotifier.ContentRectangle=new Rectangle(75, 92, 215, 55);
- break;
- }
- taskbarNotifier.Show(title ,content,500,3000,500);
- }
- private void TvUsers_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
- {
- this.point.X =e.X ;
- this.point.Y =e.Y;
- }
- private void butOpenShared_Click(object sender, System.EventArgs e)
- {
- try
- {
- string sharedComputerName="\\"+ Convert.ToString(this.butOpenShared.Tag);
- System.Diagnostics.Process.Start(sharedComputerName);
- }
- catch
- {
- MessageBox.Show("无法打开对方("+ Convert.ToString(this.butOpenShared.Tag) +")的共享文件夹(原因可能是对方没有开机或没有设置共享以及其它网络故障造成的)。","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
- }
- }
- private void butMenuMain_PopupClose(object sender, System.EventArgs e)
- {
- this.butOpenShared.Visible=false;
- this.butSendFile.Visible=false;
- this.butSendMsg.Visible=false;
- }
- private void butSendMsg_Click(object sender, System.EventArgs e)
- {
- ActivateOrCreateFormSend();
- }
- private void butSendFile_Click(object sender, System.EventArgs e)//发送文件
- {
- System.Windows.Forms.OpenFileDialog fd=new OpenFileDialog();
- fd.Title="选择要发送的文件";
- fd.Filter="所有文件(*.*)|*.*";
- if (fd.ShowDialog()==System.Windows.Forms.DialogResult.OK)
- {
- ClassUserInfo userinfo =this.findUser(butSendFile.Tag.ToString());
- if (userinfo!=null)
- {
- foreach(System.Windows.Forms.Form form in forms)
- if (form.Tag.ToString() == userinfo.ID )
- {
- FormSendMsg f=(form as FormSendMsg );
- f.sendFileRequest(fd.FileName );
- f.Activate ();
- return;
- }
- FormSendMsg newf =new FormSendMsg();
- newf.Tag=userinfo.ID;
- newf.Text="与 "+ userinfo.UserName+"("+userinfo.ID+") 对话";
- newf.sendFileRequest(fd.FileName );
- forms.add(newf);
- newf.Show();
- }
- }
- }
- private void ButAbout_Click(object sender, System.EventArgs e)
- {
- MessageBox.Show("LanMsg局域网即时通讯n作者:租李叶(25348855)");
- }
-
- }
- }