第三部分:登陆界面的设计及代码

一:效果图及界面设计

1. 效果图:

2. 界面设计:

(1)仿照QQ的登陆界面,右上角放了三个Label,用来做关闭、最小化和设置,使用了它们的Click事件当做按钮用。

(2)上面是一个pictureBox放一个图片。

(3)下面用tableLayoutPanel布局。

(4)tableLayoutPanel左侧图片和图片右下角的在线图放在一个Panel里,这个Panel占3行。

(5)用户名用ComboBox,密码框用TextBox,登陆用了个Button。

(6)用到的各个控件的Name:

关闭按钮:closewindow,最小化按钮:smallwindow,上面的大图片:pictureBox1,状态图标:zhuangtai;

用户名框:combuid,密码框:textpwd,登陆按钮:btnlogin,放左右两个图片imageList1;

右键菜单:contextMenuStrip1,右键菜单里用到的图片:imageList2。

二.:代码设计:

  1. //记录更改状态,默认为1是在线
  2. int zt = ;
  3.  
  4. //记录登录者的变量
  5. private string uid;
  6.  
  7. public string Uid
  8. {
  9. get { return uid; }
  10. set { uid = value; }
  11. }
  12.  
  13. public Login()
  14. {
  15. InitializeComponent();
  16. }
  17. //界面加载
  18. private void Login_Load(object sender, EventArgs e)
  19. {
  20. //设置透明,需要先在设计中将要透明控件的backcolor设置为Transparent
  21. shezhi.Parent = this.pictureBox1;
  22. smallwindow.Parent = this.pictureBox1;
  23. closewindow.Parent = this.pictureBox1;
  24. zhuangtai.Parent = this.pictureBox2;
  25. //设置左右两个图片
  26. pictureBox3.Image = imageList1.Images[];
  27. pictureBox4.Image = imageList1.Images[];
  28.  
  29. }//关闭窗口按钮
  30. private void closewindow_Click(object sender, EventArgs e)
  31. {
  32. this.Close();
  33. }
  34. //关闭按钮鼠标放上去变色
  35. private void closewindow_MouseEnter_1(object sender, EventArgs e)
  36. {
  37. closewindow.BackColor = Color.LightCoral;
  38. }
  39. //关闭按钮鼠标离开恢复颜色
  40. private void closewindow_MouseLeave_1(object sender, EventArgs e)
  41. {
  42. closewindow.BackColor = Color.Transparent;
  43. }
  44. //最小化按钮最小化
  45. private void smallwindow_Click_1(object sender, EventArgs e)
  46. {
  47. this.WindowState = FormWindowState.Minimized;
  48. }
  49.  
  50. //实现鼠标点在上面大图片上拖动窗体的代码
  51. int x;
  52. int y;
  53.  
  54. private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
  55. {
  56. x = e.X;
  57. y = e.Y;
  58. }
  59.  
  60. private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
  61. {
  62. if (e.Button == System.Windows.Forms.MouseButtons.Left)
  63. {
  64. this.Left = this.Left + (e.X - x);
  65. this.Top = this.Top + (e.Y - y);
  66. }
  67. }
  68. //密码框获得焦点时改为密码框,清空,字体颜色变化
  69. private void textpwd_Enter(object sender, EventArgs e)
  70. {
  71. textpwd.Text = "";
  72. textpwd.ForeColor = Color.Black;
  73. textpwd.PasswordChar = Convert.ToChar("●");
  74. }
  1. //用户名框鼠标点进去时,清空,字体颜色变化
  2. private void combuid_MouseDown_1(object sender, MouseEventArgs e)
  3. {
  4. combuid.Text = "";
  5. combuid.ForeColor = Color.Black;
  6. }

  7. //登录按钮按下时
  8. private void btnlogin_Click_1(object sender, EventArgs e)
  9. {
  10. //取用户名密码,查询数据库
  11. string uid = combuid.Text.ToString();
  12. string pwd = textpwd.Text.ToString();
  13. UsersTableAdapter adp = new UsersTableAdapter();
  14. qqdata.UsersDataTable table = adp.LoginCheck(uid,pwd);
  15. //判断登录是否成功
  16. if (table.Rows.Count > )
  17. {
  18. //成功之后this.DialogResult设为OK
  19. this.DialogResult = DialogResult.OK;
  20. Uid = table[].UserName; //将用户名传到Uid
  21. adp.UpdateStateByCode(zt, uid); //将状态更改
  22. adp.UpdateLasttimeByCode(DateTime.Now, uid); //将登录时间记录
  23. }
  24. else
  25. {
  26. MessageBox.Show("账号密码错误!");
  27. }
  28. }
  29.  
  30. //头像右下角图标点击的时候弹出右键菜单

private void zhuangtai_Click_1(object sender, EventArgs e)
{
contextMenuStrip1.Show(zhuangtai, 0, 18);
}

  1. //右键菜单选择在线的时候

private void 在线ToolStripMenuItem_Click(object sender, EventArgs e)
{
zhuangtai.Image = imageList2.Images[3];
zt = Convert.ToInt32(在线ToolStripMenuItem.Tag);
}

  1. //右键菜单选择隐身的时候

private void 隐身ToolStripMenuItem_Click(object sender, EventArgs e)
{
zhuangtai.Image = imageList2.Images[2];
zt = Convert.ToInt32(隐身ToolStripMenuItem.Tag);
}

  1. //右键菜单选择忙碌的时候

private void 忙碌ToolStripMenuItem_Click(object sender, EventArgs e)
{
zhuangtai.Image = imageList2.Images[1];
zt = Convert.ToInt32(忙碌ToolStripMenuItem.Tag);
}

  1. //右键菜单选择离开的时候

private void 离开ToolStripMenuItem_Click(object sender, EventArgs e)
{
zhuangtai.Image = imageList2.Images[0];
zt = Convert.ToInt32(离开ToolStripMenuItem.Tag);
}

  1.  

简单的实现QQ通信功能(三)的更多相关文章

  1. 简单的实现QQ通信功能(二)

    第二部分:功能需求以及大体思路 一:功能需求: 1. 角色:登录用户. 2. 登录: (1)检查用户名和密码是否正确,正确登录成功,否则提醒用户名或密码错误. (2)登录时可以选择登录状态,送入数据库 ...

  2. 简单的实现QQ通信功能(四)

    第四部分:主界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)上面显示自己信息用一个PictureBox和两个Label,用来显示自己的头像和昵称备注名. (2)下面用了 ...

  3. 简单的实现QQ通信功能(五)

    第五部分:聊天界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)左上角显示朋友的头像和“某某正在和某某聊天”. (2)中间的聊天窗口用了一个ListView,视图用详细信 ...

  4. 简单的实现QQ通信功能(一)

    第一部分:数据库的设计,数据集的建立 一:数据库的设计: 1.用户表:包含用户名.密码.昵称.性别.备注.状态.头像代号和最后登录时间. 2.朋友关系表:自增长列为主键列,用户名和好友名,还有朋友的状 ...

  5. 经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能

    说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后, ...

  6. QQ通信机制(转)

    下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相互建立通信,而不需要固定IP?也就是这个QQ用户端是怎样找到另一个QQ用户的,而用户在每次使用时他可能用的是不同的计算机, ...

  7. QQ通信原理

    转载自http://blog.csdn.net/li_xiao_ming/article/details/8106857 下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相 ...

  8. jsp+servlet+mysql 实现简单的银行登录转账功能

    jsp+servlet+mysql 实现简单的银行登录转账功能 [前期的准备] html(登录界面),servlet(处理业务逻辑),jsp(主要实现界面),mysql(实现与数据库的简单的交互)先从 ...

  9. 网页中插入QQ在线功能

    网页中插入QQ在线功能 本随笔记录的是网页中如何插入qq在线聊天,这里讲解的是 普通QQ在线聊天操作. 例:第一种方式  使用 tencent://message/?uin=QQ号码&Site ...

随机推荐

  1. [hadoop源代码解读] 【SequenceFile】

    SequeceFile是Hadoop API提供的一种二进制文件支持.这种二进制文件直接将<key, value>对序列化到文件中.一般对小文件可以使用这种文件合并,即将文件名作为key, ...

  2. hadoop2.2编程:矩阵相乘简单实现

    /* matrix-matrix multiplication on Hadoop A x B = C constraint: A, B, C must be of the same size I u ...

  3. [MarsZ]程序猿谈大学之为什么不推荐就业时做程序猿

    这篇文章适合一切有志做一个程序猿的人,而不仅仅只是即将进入就业市场的大学生. “又到了毕业找工作的时候了,好多朋友打电话向我咨询要不要让孩子做程序员.作为一个业内资深人士,我觉得这不能一概而论!要辩证 ...

  4. Linux 设备模型浅析之 uevent 篇(2)

    Linux 设备模型浅析之 uevent 篇 本文属本人原创,欢迎转载,转载请注明出处.由于个人的见识和能力有限,不可能面 面俱到,也可能存在谬误,敬请网友指出,本人的邮箱是 yzq.seen@gma ...

  5. oracle nologging用法

    一.oracle日志模式分为(logging,force logging,nologging) 默认情况是logging,就是会记录到redo日志中,force logging是强制记录日志,nolo ...

  6. HW5.16

    public class Solution { public static void main(String[] args) { for(int i = 2000; i <= 2010; i++ ...

  7. Codeforces149D - Coloring Brackets(区间DP)

    题目大意 要求你对一个合法的括号序列进行染色,并且需要满足以下条件 1.要么不染色,要么染红色或者蓝色 2.对于任何一对括号,他们当中有且仅有一个被染色 3.相邻的括号不能染相同的颜色 题解 用区间d ...

  8. CentOS上安装FastDFS分布式文件系统

    鱼大自己写的项目简介:http://bbs.chinaunix.net/thread-1920470-1-1.html 架构简介:http://www.programmer.com.cn/4380/ ...

  9. android图片闪烁或帧动画

    remote_recording_transition.xml 文件 <?xml version="1.0" encoding="utf-8"?> ...

  10. POJ#2065. SETI

    题目描述 For some years, quite a lot of work has been put into listening to electromagnetic radio signal ...