C# 粘连窗体效果(窗体连动 类似千千静听播放器的)

两个窗体分别是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

自己把界面设计好看点,说不定你能比它还炫呵。

希望对大家有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值