仿QQ面板的WinForm窗体
说明:前几天在一个朋友那里看到做得很漂亮的一个企业及时通讯软件,利用C#编写,完全没有利用第三方控件就实现了类似于QQ面板的效果,非常漂亮。
回家之后凭着自己的记忆和查阅MSDN尝试实现了一下,初步实现了类似效果,现在奉献给大家。
在程序中用到了三种控件(不包括窗体类):ImageList、Button和ListView。Button控件显示好友分组,点击之后显示相应好友分组的信息;ImageList控件用于存放好友头像;ListView控件用于显示好友列表。在程序中不是用Location来定位控件的位置,而是使用Dock属性来设置控件的停靠,并随着父控件一起调整大小。
程序核心代码:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- namespace QQPanelDemo
- {
- /// <SUMMARY></SUMMARY>
- /// 说明:前几天在一个朋友那里看到做得很漂亮的一个企业及时通讯软件,利用C#编写,完全没有利用第三方控件就实现了类似于QQ面板的效果,非常漂亮。
- ///回家之后凭着自己的记忆和查阅MSDN尝试实现了一下,初步实现了类似效果,现在奉献给大家。
- ///在程序中用到了三种控件(不包括窗体类):ImageList、Button和ListView。
- ///Button控件显示好友分组,点击之后显示相应好友分组的信息;ImageList控件用于存放好友头像;ListView控件用于显示好友列表。
- ///在程序中不是用Location来定位控件的位置,而是使用Dock属性来设置控件的停靠,并随着父控件一起调整大小。
- /// 作者:周公
- /// 日期:2008-5-31
- /// 原创地址:<A href="http://blog.youkuaiyun.com/zhoufoxcn/archive/2008/05/31/2499194.aspx">http://blog.youkuaiyun.com/zhoufoxcn/archive/2008/05/31/2499194.aspx</A>
- ///
- public partial class MainForm : Form
- {
- public MainForm()
- {
- InitializeComponent();
- }
- //显示我的好友名单菜单
- private void btnMyFriend_Click(object sender, EventArgs e)
- {
- //设置停靠
- listView.Dock = DockStyle.None;
- btnMyFriend.Dock = DockStyle.Top;
- btnMyColleague.Dock = DockStyle.Bottom;
- btnMyStranger.SendToBack();
- btnMyStranger.Dock = DockStyle.Bottom;
- listView.BringToFront();
- listView.Dock = DockStyle.Bottom;
- //添加项
- listView.Clear();
- listView.Items.Add("老婆", "老婆", 5);
- listView.Items.Add("小蜜", "小蜜", 1);
- listView.Items.Add("周公", "周公", 7);
- listView.Items.Add("情人", "情人", 7);
- listView.Items.Add("丽丽", "丽丽", 6);
- listView.Items.Add("花花", "花花", 8);
- listView.Items.Add("贝贝", "贝贝", 9);
- }
- private void MainForm_Load(object sender, EventArgs e)
- {
- //设置停靠
- listView.Dock = DockStyle.None;
- btnMyFriend.Dock = DockStyle.Top;
- btnMyColleague.Dock = DockStyle.Bottom;
- btnMyStranger.SendToBack();
- btnMyStranger.Dock = DockStyle.Bottom;
- listView.BringToFront();
- listView.Dock = DockStyle.Bottom;
- //添加项
- listView.Clear();
- listView.LargeImageList = imageList;
- listView.Items.Add("老婆", "老婆", 5);
- listView.Items.Add("小蜜", "小蜜", 1);
- listView.Items.Add("丽丽", "丽丽", 4);
- listView.Items.Add("周公", "周公", 7);
- listView.Items.Add("情人", "情人", 7);
- listView.Items.Add("花花", "花花", 8);
- listView.Items.Add("贝贝", "贝贝", 9);
- }
- //显示我的陌生人菜单
- private void btnMyStranger_Click(object sender, EventArgs e)
- {
- //设置停靠
- listView.Dock = DockStyle.None;
- btnMyStranger.SendToBack();
- btnMyStranger.Dock = DockStyle.Top;
- btnMyColleague.SendToBack();
- btnMyColleague.Dock = DockStyle.Top;
- btnMyFriend.SendToBack();
- btnMyFriend.Dock = DockStyle.Top;
- listView.Dock = DockStyle.Top;
- ////添加项
- listView.Clear();
- listView.Items.Add("赌友", "赌友", 16);
- listView.Items.Add("牌友", "牌友", 14);
- listView.Items.Add("聊友", "聊友", 15);
- listView.Items.Add("吹友", "吹友", 12);
- listView.Items.Add("侃友", "侃友", 11);
- listView.Items.Add("驴友", "驴友", 9);
- listView.Items.Add("书友", "书友", 10);
- listView.Items.Add("笔友", "笔友", 13);
- }
- //显示我的同事菜单
- private void btnMyColleague_Click(object sender, EventArgs e)
- {
- //设置停靠
- listView.Dock = DockStyle.None;
- btnMyColleague.Dock = DockStyle.Top;
- btnMyFriend.SendToBack();
- btnMyFriend.Dock = DockStyle.Top;
- btnMyStranger.Dock = DockStyle.Bottom;
- listView.Dock = DockStyle.Bottom;
- listView.BringToFront();
- ////添加项
- listView.Items.Clear();
- listView.Items.Add("老板", "老板", 2);
- listView.Items.Add("董事长", "董事长", 3);
- listView.Items.Add("组长", "组长", 4);
- listView.Items.Add("班长", "班长", 17);
- listView.Items.Add("妇女主任", "妇女主任", 16);
- listView.Items.Add("行政主管", "行政主管", 15);
- listView.Items.Add("楼道大妈", "楼道大妈", 2);
- listView.Items.Add("办公室主任", "办公室主任", 3);
- listView.Items.Add("经理办", "经理办", 4);
- listView.Items.Add("党委办", "党委办", 17);
- listView.Items.Add("宣传办", "宣传办", 16);
- listView.Items.Add("退休办", "退休办", 15);
- }
- }
- }
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace QQPanelDemo
{
///
/// 说明:前几天在一个朋友那里看到做得很漂亮的一个企业及时通讯软件,利用C#编写,完全没有利用第三方控件就实现了类似于QQ面板的效果,非常漂亮。
///回家之后凭着自己的记忆和查阅MSDN尝试实现了一下,初步实现了类似效果,现在奉献给大家。
///在程序中用到了三种控件(不包括窗体类):ImageList、Button和ListView。
///Button控件显示好友分组,点击之后显示相应好友分组的信息;ImageList控件用于存放好友头像;ListView控件用于显示好友列表。
///在程序中不是用Location来定位控件的位置,而是使用Dock属性来设置控件的停靠,并随着父控件一起调整大小。
/// 作者:周公
/// 日期:2008-5-31
/// 原创地址:http://blog.youkuaiyun.com/zhoufoxcn/archive/2008/05/31/2499194.aspx
///
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
//显示我的好友名单菜单
private void btnMyFriend_Click(object sender, EventArgs e)
{
//设置停靠
listView.Dock = DockStyle.None;
btnMyFriend.Dock = DockStyle.Top;
btnMyColleague.Dock = DockStyle.Bottom;
btnMyStranger.SendToBack();
btnMyStranger.Dock = DockStyle.Bottom;
listView.BringToFront();
listView.Dock = DockStyle.Bottom;
//添加项
listView.Clear();
listView.Items.Add("老婆", "老婆", 5);
listView.Items.Add("小蜜", "小蜜", 1);
listView.Items.Add("周公", "周公", 7);
listView.Items.Add("情人", "情人", 7);
listView.Items.Add("丽丽", "丽丽", 6);
listView.Items.Add("花花", "花花", 8);
listView.Items.Add("贝贝", "贝贝", 9);
}
private void MainForm_Load(object sender, EventArgs e)
{
//设置停靠
listView.Dock = DockStyle.None;
btnMyFriend.Dock = DockStyle.Top;
btnMyColleague.Dock = DockStyle.Bottom;
btnMyStranger.SendToBack();
btnMyStranger.Dock = DockStyle.Bottom;
listView.BringToFront();
listView.Dock = DockStyle.Bottom;
//添加项
listView.Clear();
listView.LargeImageList = imageList;
listView.Items.Add("老婆", "老婆", 5);
listView.Items.Add("小蜜", "小蜜", 1);
listView.Items.Add("丽丽", "丽丽", 4);
listView.Items.Add("周公", "周公", 7);
listView.Items.Add("情人", "情人", 7);
listView.Items.Add("花花", "花花", 8);
listView.Items.Add("贝贝", "贝贝", 9);
}
//显示我的陌生人菜单
private void btnMyStranger_Click(object sender, EventArgs e)
{
//设置停靠
listView.Dock = DockStyle.None;
btnMyStranger.SendToBack();
btnMyStranger.Dock = DockStyle.Top;
btnMyColleague.SendToBack();
btnMyColleague.Dock = DockStyle.Top;
btnMyFriend.SendToBack();
btnMyFriend.Dock = DockStyle.Top;
listView.Dock = DockStyle.Top;
////添加项
listView.Clear();
listView.Items.Add("赌友", "赌友", 16);
listView.Items.Add("牌友", "牌友", 14);
listView.Items.Add("聊友", "聊友", 15);
listView.Items.Add("吹友", "吹友", 12);
listView.Items.Add("侃友", "侃友", 11);
listView.Items.Add("驴友", "驴友", 9);
listView.Items.Add("书友", "书友", 10);
listView.Items.Add("笔友", "笔友", 13);
}
//显示我的同事菜单
private void btnMyColleague_Click(object sender, EventArgs e)
{
//设置停靠
listView.Dock = DockStyle.None;
btnMyColleague.Dock = DockStyle.Top;
btnMyFriend.SendToBack();
btnMyFriend.Dock = DockStyle.Top;
btnMyStranger.Dock = DockStyle.Bottom;
listView.Dock = DockStyle.Bottom;
listView.BringToFront();
////添加项
listView.Items.Clear();
listView.Items.Add("老板", "老板", 2);
listView.Items.Add("董事长", "董事长", 3);
listView.Items.Add("组长", "组长", 4);
listView.Items.Add("班长", "班长", 17);
listView.Items.Add("妇女主任", "妇女主任", 16);
listView.Items.Add("行政主管", "行政主管", 15);
listView.Items.Add("楼道大妈", "楼道大妈", 2);
listView.Items.Add("办公室主任", "办公室主任", 3);
listView.Items.Add("经理办", "经理办", 4);
listView.Items.Add("党委办", "党委办", 17);
listView.Items.Add("宣传办", "宣传办", 16);
listView.Items.Add("退休办", "退休办", 15);
}
}
}
- 程序运行效果:<BR><IMG alt="" src="https://p-blog.youkuaiyun.com/images/p_blog_youkuaiyun.com/zhoufoxcn/QQPanel1.JPG">
程序运行效果:

- <IMG alt="" src="https://p-blog.youkuaiyun.com/images/p_blog_youkuaiyun.com/zhoufoxcn/QQPanel2.JPG">

- <IMG alt="" src="https://p-blog.youkuaiyun.com/images/p_blog_youkuaiyun.com/zhoufoxcn/QQPanel3.JPG">

- 说明:可演示和编译执行的源代码请到<A href="http://download.youkuaiyun.com/source/476468">http://download.youkuaiyun.com/source/476468</A>下载。
说明:可演示和编译执行的源代码请到http://download.youkuaiyun.com/source/476468下载。
出处:http://blog.youkuaiyun.com/zhoufoxcn/archive/2008/05/31/2499194.aspx