我有一个窗体设置为无边框的,但就不能更改大小了,怎么才能和有边框的时候一样,用鼠标按着一拖就能改变大小啊.能否给个例子先(最好给个简单点的,能改变窗体的高度的就行了).
解决方案 »
- 企业应用-数据同步问题
- http://www.xmcsw.com/中的搜索技术是如何实现的!搜出的结果都是厦门的信息!和baidu\google的搜索有什么异同?200分
- 请教高手:如何判断本机是否已经和InterNet连通?谢谢!!
- 怎样隐藏datagrid控件中的某一列?
- 小弟征集c#.net开发web程序的常用代码片断~~~~嘻嘻,收集好了与大家共亨~~~~
- 大家来看看
- 对象关联,怎么维护完整性?
- 如何用正则表达式匹配 11,dd,33,44,dd,ff,44,5,63,354 这样的字符串??
- 一个很简单的问题,大家不要笑我
- 我想学C#,但我不知道怎么买光盘,猴急!
- 自己做了窗体控件,怎么实现鼠标拖动边框,大小就改变.
- 用鼠标拖动控件
private Point mouseOffset;
private bool isMouseDown = false; private void Form2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
int xOffset;
int yOffset; if (e.Button == MouseButtons.Left)
{
xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
yOffset = -e.Y - SystemInformation.CaptionHeight -
SystemInformation.FrameBorderSize.Height;
mouseOffset = new Point(xOffset, yOffset);
isMouseDown = true;
}
} private void Form2_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMouseDown)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
Location = mousePos;
} } private void Form2_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
isMouseDown=false;
}
{
get
{
CreateParams cp = base.CreateParams;
cp.Style |= 0xC0000;
return cp;
}
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style |= 0xC0000;
return cp;
}
}确实是可以拖动了,但是我的无边框窗体成了有边框的了~~~~。
另外介绍一下...cp.Style |= 0xC0000到底是个什么东东哦?不懂!
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
this.mousePosition.X = e.X;
this.mousePosition.Y = e.Y;
}
}private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
this.Top = Control.MousePosition.Y - mousePosition.Y;
this.Left = Control.MousePosition.X - mousePosition.X;
}
}
{
int WM_NCHITTEST = 0x0084;
int HTBOTTOMRIGHT= 17;
int HTBOTTOMLEFT = 16;
int HTCLIENT = 1;
if(m.Msg == WM_NCHITTEST)
{
int p = Control.MousePosition.X - this.Left + 2;//2为允许范围
if( p >= this.Width)//Mouse位于左边
m.Result = (IntPtr)HTBOTTOMRIGHT;
else if(p <= 2)//Mouse位于右边
m.Result = (IntPtr)HTBOTTOMLEFT;
else
m.Result = (IntPtr)HTCLIENT;
}
else
base.WndProc (ref m);
}
Mouse位于上边,下端的情况自己搞定。消息号可以查看winuser.h的定义