仿QQ面板的WinForm窗体

说明:前几天在一个朋友那里看到做得很漂亮的一个企业及时通讯软件,利用C#编写,完全没有利 用第三方控件就实现了类似于QQ面板的效果,非常漂亮。

回家之后凭着自己的记忆和查阅MSDN尝试实现了一下,初步实现了类似效果,现在奉献给大家。

在程序中用到了三种控件(不包括窗体类):ImageList、Button和ListView。Button控件显示好友分组,点击之后显示相应好友分组的信息; ImageList控件用于存放好友头像;ListView控件用于显示好友列表。在程序中不是用Location来定位控 件的位置,而是使用Dock属性来设置控件的停靠,并随着父控件一起调整大小。

程序核心代码:

view plaincopy to clipboardprint?

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.csdn.net/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);
}
}
}

view plaincopy to clipboardprint?

时间: 2024-10-28 07:09:22

仿QQ面板的WinForm窗体的相关文章

仿QQ面板举一反三之拉幕式窗口

设计昨天尝试了仿QQ面板的设计(具体请看:http://www.cnblogs.com/KenBlove/archive/2008/09/27/1300938.html),今天忽然想如果将面板横着放,不就成了一个拉幕式的窗口了么? 说做就做.立即动手: 首先,和QQ面板不同的就是QQ面板设计当点击Module button的时候,会显示下一级的button.但是这次我们做的不同,应该显示不同的内容,道理大同小异.我们将在panel中加入usercontrol,至于usercontrol里面要显示

js实现带缓冲效果的仿QQ面板折叠菜单代码_javascript技巧

本文实例讲述了js实现带缓冲效果的仿QQ面板折叠菜单代码.分享给大家供大家参考.具体如下: 带缓冲效果的仿QQ面板折叠菜单代码,使用方法:调用效果: Effect(1,2); 其中1为: 被改变对象的id 其中2为: 控制容器的id 可在使用: this.parentNode.id 取得(父标签的id) 注意给对象ID的时候一定不要重复. 运行效果如下图所示: 在线演示地址如下: http://demo.jb51.net/js/2015/js-buffer-style-qq-menu-codes

JS实现仿QQ面板的手风琴效果折叠菜单代码_javascript技巧

本文实例讲述了JS实现仿QQ面板的手风琴效果折叠菜单代码.分享给大家供大家参考.具体如下: 这是一款简单实用的垂直导航菜单,有人把这种风格称为"手风琴"菜单,类似仿QQ面板的折叠菜单,鼠标放在任意一个菜单上,它会展开所属的二级菜单,很不错的选择,以前就分享过此类菜单,这次经过了代码优化升级,更人性化了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-f-qq-sfq-style-menu-codes/ 具体代码如下: <!

C#仿QQ面板的简单实现

首先来看看最终效果: 下边我们来一步一步实现: 首先新建一个C# windows application,并在界面上添加一个Pannel控件,拉成合适的形状,如下图: 我们要做的,就是将Button加入到Pannel控件中,并根据鼠标点击移动Button和添加子Button. 第一步,定义一些必要的变量和属性: private string[] _Module; private string[,] _ChildModule; private int _ModuleButtonHeight = 5

解决方案-winform窗体程序怎么设置QQ的定时重启

问题描述 winform窗体程序怎么设置QQ的定时重启 使用winfrom窗体程序,怎么定时启动QQ应用程序,谢谢 有解决方案的可以帮帮忙吗 在这里谢谢了 下面是我个人邮箱254243717@qq.com 解决方案 只要启动QQ吗?用一个winform程序加个timer定时器就是了,找到qq.exe所在的路径,然后process.start启动. 解决方案二: 可以调用Win32 API CreateProcess/ShellExecuteEx() 解决方案三: 先获取进程列表,然后根据进程名判

Winform窗体类似QQ差不多的样式

问题描述 在创建Winform窗体应用程序的时候,希望实现像QQ窗体那种半透明窗体,看起来很柔滑的感觉.不要隐藏边框,让整个窗体融为一体的那种感觉,好像是继承什么API函数,忘记了,求高手! 解决方案 解决方案二:网上解决方案好像挺多的啊,google搜一下,参考http://826891.blog.163.com/blog/static/8637693201132061446148/解决方案三:这个是设置窗口的属性..Opacity这个属性.这个属性是一个百分比哈.解决方案四:去我的资源里面下

纯js实现仿QQ邮箱弹出确认框

仿QQ邮箱的弹出层,弹出确认框,主要是用火狐的firebug把html和css扣了下来,没有做封装,就定义了一个拖动事件. 大家可以封装自己的弹出窗,嘿嘿! 代码非常简单,这里就不多废话了. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

Android自定义ListView实现仿QQ可拖拽列表功能_Android

我们大致的思路,其实是这样子的,也是我的设想,我们可以先去实现一个简单的ListView的数据,但是他的Adapter,我们可以用系统封装好的,然后传递进去一个实体类,最后自定义一个listview去操作,所以我们先把准备的工作做好,比如? list_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

Android开发仿QQ空间根据位置弹出PopupWindow显示更多操作效果_Android

我们打开QQ空间的时候有个箭头按钮点击之后弹出PopupWindow会根据位置的变化显示在箭头的上方还是下方,比普通的PopupWindow弹在屏幕中间显示好看的多. 先看QQ空间效果图: 这个要实现这个效果可以分几步进行 1.第一步自定义PopupWindow,实现如图的样式,这个继承PopupWindow自定义布局很容易实现 2.得到点击按钮的位置,根据位置是否在屏幕的中间的上方还是下方,将PopupWindow显示在控件的上方或者下方 3.适配问题,因为PopupWindow上面的操作列表