C# 粘连窗体效果(窗体连动 类似千千静听播放器的)
来源:互联网 发布:照片打印软件下载 编辑:程序博客网 时间:2024/06/10 01:25
两个窗体分别是FormMain FormList
第1个窗体:FormMain :
public partial class FormMain : Form
{
FormList formlist=null ;
public FormMain()
{
FormMain fm = this;
formlist = new FormList(ref fm);//传到第2个窗体去
InitializeComponent();
}
public bool isLinked ;
private void FormMain_Load(object sender, EventArgs e)
{
Application.DoEvents();
formlist.Show();
isLinked = false;
formlist.Left = this.Left + this.Width+20;//开始分开点,也可以不分开不要20
formlist.Top = this.Top;
this.Show();
}
private void FormMain_LocationChanged(object sender, EventArgs e)
{
int fltop = formlist.flTop;
if (formlist == null) { return; }
// 一起移2个窗体
if (isLinked || Math.Abs(this.Left + this.Width - formlist.Left) <= 15)
{
formlist.Left = this.Left + this.Width;
// formlist.Top = this.Top;
formlist.Top = this.Top - (fltop);
isLinked = true;
return;
}
isLinked = false;
}
}
---------------------------------------------------------------------------------------------
第2个窗体:FormList
public partial class FormList : Form
{
public FormList()
{
InitializeComponent();
ClassCommon.com_FormList = this;
}
public FormList(ref FormMain fm)
{
_fm = fm;//引用FormMain
InitializeComponent();
}
FormMain _fm = null;
public int flTop = 0;//记录两个窗体高度差
private void FormList_LocationChanged(object sender, EventArgs e)
{
this.Text = this.Location.ToString();
//if (_fm == null) { return; }
flTop = _fm.Top - this.Top;
if (Math.Abs(_fm.Left + _fm.Width - this.Left) <= 15)
{
this.Left = _fm.Left + _fm.Width;
_fm.isLinked = true;
}
else
{
_fm.isLinked = false;
}
}
}
哈哈运行是不是很酷。。。。
别急,要千千静听那样就要设置无边框窗体,要实现拖动
OK ,用下面的加到2个窗体类里:
#region "拖动窗体"
private bool moveFlag = false;
private int x = 0;
private int y = 0;
protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
{
if (moveFlag && (e.Button == MouseButtons.Left))
this.SetBounds(Left + e.X - x, Top + e.Y - y, this.Width, this.Height);
base.OnMouseMove(e);
}
protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
{
if (!moveFlag && e.Clicks >= 1)
moveFlag = true;
x = e.X;
y = e.Y;
base.OnMouseDown(e);
}
protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
{
if (moveFlag)
moveFlag = false;
base.OnMouseUp(e);
}
#endregion
自己把界面设计好看点,说不定你能比它还炫呵。
希望对大家有用。
- C# 粘连窗体效果(窗体连动 类似千千静听播放器的)
- [VC]Dialog实现类似Winamp、千千静听的磁性吸附窗体(Dock)
- 关于C# 模仿千千静听 磁铁窗体 的个人的一个思路
- android 跳动频谱 播放器(类似千千静听)
- android 跳动频谱 播放器(类似千千静听)
- ALSong-带有高级音效的漂亮音乐播放器(类似千千静听)
- Spy++的应用之千千静听播放器的控制
- Linux 下的仿千千静听播放器
- VC做了个仿千千静听的播放器
- 利用千千静听做网吧播放器
- 一个类似千千静听进度条的SLIDER (非视觉效果)
- Ubuntu 的千千静听
- 千千静听的危机
- 为UBUNTU安装一个像千千静听一样的MP3播放器
- 用千千静听制作一张自动播放的光盘
- 类似qq的窗体停靠效果(未果)
- c# 类似于千千静听的桌面停靠程序
- c# 类似于千千静听的桌面停靠程序收藏
- 基于visual Studio2013解决面试题之1202最大公共字符串
- JAVA项目命名问题
- Ubuntu桌面生存指南 (4) --- Ubuntu系统备份恢复升级策略
- HDOJ Brave Game(巴什博弈)
- 数据结构的简单学习6
- C# 粘连窗体效果(窗体连动 类似千千静听播放器的)
- ORA-01251错误oracle服务启动无法连接误删非法删除数据文件导致数据库不能打开ORA-01122 ORA-01251
- 黑马程序员——继承
- Sizeof用法 http://blog.csdn.net/guanchanghui/article/details/1556319
- 利用归并排序求解序列中和为X的数有几对
- 比较Java中"hashCode" "equals" "==" "System.identityhashcode"
- UVA 11549
- Git远程仓库镜像代码自动更新工具
- java.lang.OutOfMemoryError: PermGen space