简单的实现QQ通信功能(三)
第三部分:登陆界面的设计及代码
一:效果图及界面设计
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是在线
int zt = ; //记录登录者的变量
private string uid; public string Uid
{
get { return uid; }
set { uid = value; }
} public Login()
{
InitializeComponent();
}
//界面加载
private void Login_Load(object sender, EventArgs e)
{
//设置透明,需要先在设计中将要透明控件的backcolor设置为Transparent
shezhi.Parent = this.pictureBox1;
smallwindow.Parent = this.pictureBox1;
closewindow.Parent = this.pictureBox1;
zhuangtai.Parent = this.pictureBox2;
//设置左右两个图片
pictureBox3.Image = imageList1.Images[];
pictureBox4.Image = imageList1.Images[]; }//关闭窗口按钮
private void closewindow_Click(object sender, EventArgs e)
{
this.Close();
}
//关闭按钮鼠标放上去变色
private void closewindow_MouseEnter_1(object sender, EventArgs e)
{
closewindow.BackColor = Color.LightCoral;
}
//关闭按钮鼠标离开恢复颜色
private void closewindow_MouseLeave_1(object sender, EventArgs e)
{
closewindow.BackColor = Color.Transparent;
}
//最小化按钮最小化
private void smallwindow_Click_1(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
} //实现鼠标点在上面大图片上拖动窗体的代码
int x;
int y; private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
} private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
this.Left = this.Left + (e.X - x);
this.Top = this.Top + (e.Y - y);
}
}
//密码框获得焦点时改为密码框,清空,字体颜色变化
private void textpwd_Enter(object sender, EventArgs e)
{
textpwd.Text = "";
textpwd.ForeColor = Color.Black;
textpwd.PasswordChar = Convert.ToChar("●");
}
//用户名框鼠标点进去时,清空,字体颜色变化
private void combuid_MouseDown_1(object sender, MouseEventArgs e)
{
combuid.Text = "";
combuid.ForeColor = Color.Black;
}
//登录按钮按下时
private void btnlogin_Click_1(object sender, EventArgs e)
{
//取用户名密码,查询数据库
string uid = combuid.Text.ToString();
string pwd = textpwd.Text.ToString();
UsersTableAdapter adp = new UsersTableAdapter();
qqdata.UsersDataTable table = adp.LoginCheck(uid,pwd);
//判断登录是否成功
if (table.Rows.Count > )
{
//成功之后this.DialogResult设为OK
this.DialogResult = DialogResult.OK;
Uid = table[].UserName; //将用户名传到Uid
adp.UpdateStateByCode(zt, uid); //将状态更改
adp.UpdateLasttimeByCode(DateTime.Now, uid); //将登录时间记录
}
else
{
MessageBox.Show("账号密码错误!");
}
} //头像右下角图标点击的时候弹出右键菜单
private void zhuangtai_Click_1(object sender, EventArgs e)
{
contextMenuStrip1.Show(zhuangtai, 0, 18);
}
//右键菜单选择在线的时候
private void 在线ToolStripMenuItem_Click(object sender, EventArgs e)
{
zhuangtai.Image = imageList2.Images[3];
zt = Convert.ToInt32(在线ToolStripMenuItem.Tag);
}
//右键菜单选择隐身的时候
private void 隐身ToolStripMenuItem_Click(object sender, EventArgs e)
{
zhuangtai.Image = imageList2.Images[2];
zt = Convert.ToInt32(隐身ToolStripMenuItem.Tag);
}
//右键菜单选择忙碌的时候
private void 忙碌ToolStripMenuItem_Click(object sender, EventArgs e)
{
zhuangtai.Image = imageList2.Images[1];
zt = Convert.ToInt32(忙碌ToolStripMenuItem.Tag);
}
//右键菜单选择离开的时候
private void 离开ToolStripMenuItem_Click(object sender, EventArgs e)
{
zhuangtai.Image = imageList2.Images[0];
zt = Convert.ToInt32(离开ToolStripMenuItem.Tag);
}
简单的实现QQ通信功能(三)的更多相关文章
- 简单的实现QQ通信功能(二)
第二部分:功能需求以及大体思路 一:功能需求: 1. 角色:登录用户. 2. 登录: (1)检查用户名和密码是否正确,正确登录成功,否则提醒用户名或密码错误. (2)登录时可以选择登录状态,送入数据库 ...
- 简单的实现QQ通信功能(四)
第四部分:主界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)上面显示自己信息用一个PictureBox和两个Label,用来显示自己的头像和昵称备注名. (2)下面用了 ...
- 简单的实现QQ通信功能(五)
第五部分:聊天界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)左上角显示朋友的头像和“某某正在和某某聊天”. (2)中间的聊天窗口用了一个ListView,视图用详细信 ...
- 简单的实现QQ通信功能(一)
第一部分:数据库的设计,数据集的建立 一:数据库的设计: 1.用户表:包含用户名.密码.昵称.性别.备注.状态.头像代号和最后登录时间. 2.朋友关系表:自增长列为主键列,用户名和好友名,还有朋友的状 ...
- 经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能
说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后, ...
- QQ通信机制(转)
下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相互建立通信,而不需要固定IP?也就是这个QQ用户端是怎样找到另一个QQ用户的,而用户在每次使用时他可能用的是不同的计算机, ...
- QQ通信原理
转载自http://blog.csdn.net/li_xiao_ming/article/details/8106857 下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相 ...
- jsp+servlet+mysql 实现简单的银行登录转账功能
jsp+servlet+mysql 实现简单的银行登录转账功能 [前期的准备] html(登录界面),servlet(处理业务逻辑),jsp(主要实现界面),mysql(实现与数据库的简单的交互)先从 ...
- 网页中插入QQ在线功能
网页中插入QQ在线功能 本随笔记录的是网页中如何插入qq在线聊天,这里讲解的是 普通QQ在线聊天操作. 例:第一种方式 使用 tencent://message/?uin=QQ号码&Site ...
随机推荐
- [转] 舞蹈链(Dancing Links)——求解精确覆盖问题
转载自:http://www.cnblogs.com/grenet/p/3145800.html 精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个 ...
- PHP数组排列
一.先看最简单的情况.有两个数组: $arr1 = array(1,9,5);$arr2 = array(6,2,4); array_multisort($arr1,$arr2); print_r($ ...
- CSS——LESS
去年就初次接触了LESS,并用他制作了一个Less.org的首页页面,但由于CSS的固有模式,没有让自己喜欢上他.由于前段时间学习bootstrap from twitter再次让我接触了这个Less ...
- Shape 与 InlineShape 的区别
Shape 对象代表文档中的图形对象,InlineShape 代表文档中的嵌入式图形对象.所谓嵌入式图形对象,是指将图像作为文字处理,在排版上以文字的方式进行排版. Shape 与 InlineSha ...
- BrnShop开源网上商城第二讲:ASP.NET MVC框架
在团队设计BrnShop的web项目之初,我们碰到了两个问题,第一个是数据的复用和传递,第二个是大mvc框架和小mvc框架的选择.下面我依次来说明下. 首先是数据的复用和传递:对于BrnShop的每一 ...
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.1.3
Use the QR decomposition to prove Hadamard's inequality: if $X=(x_1,\cdots,x_n)$, then $$\bex |\det ...
- SQL经典题-实战
Student(S#,Sname,Sage,Ssex) 学生表 S#:学号:Sname:学生姓名:Sage:学生年龄:Ssex:学生性别 Course(C#,Cname,T#) 课程表 ...
- ModelSim仿真
(1)出现“Fatal: SDF files require Altera primitive library” 书上的方法是在ModelSim-SE下的使用,而我用的是ModelSim-Alter ...
- [置顶] 斗地主算法的设计与实现--项目介绍&如何定义和构造一张牌
大学期间,我在别人的基础上,写了一个简易的斗地主程序. 主要实现了面向对象设计,洗牌.发牌.判断牌型.比较牌的大小.游戏规则等算法. 通过这个斗地主小项目的练习,提高了我的面向对象设计能力,加深了对算 ...
- JS多态
面向对象语言有三大特征,前面介绍了封装和继承,那么JS作为一门面向对象语言,有多态么,又怎么实现多态呢? 我们先看看多态的概念: 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果. ...