hxrzsoft
在Visual Studio 2015 update3上面进行编译的,若需要低版本可以下载VS版本转换器.
首先,启动VS2015。
在“开始”中点击“新建项目”
.Net版本自己选,我先用.Net4来作为例子
选择“Windows窗体应用程序”
名称自己写,我先以testprojectWindow作为例子
以上搞完后如图所示(窗口大小自选)


双击form1进入form1.cs:


在:
        public Form1()
        {
            InitializeComponent();
        }

[这个地方]添加以下代码:
const int Guying_HTLEFT = 10;
const int Guying_HTRIGHT = 11;
const int Guying_HTTOP = 12;
const int Guying_HTTOPLEFT = 13;
const int Guying_HTTOPRIGHT = 14;
const int Guying_HTBOTTOM = 15;
const int Guying_HTBOTTOMLEFT = 0x10;
const int Guying_HTBOTTOMRIGHT = 17;

protected override void WndProc(ref Message m)
{
             switch (m.Msg)
            {
                case 0x0084:
                     base.WndProc(ref m);
                     Point vPoint = new Point((int)m.LParam & 0xFFFF,
                        (int)m.LParam >> 16 & 0xFFFF);
                     vPoint = PointToClient(vPoint);
                     if (vPoint.X <= 5)
                         if (vPoint.Y <= 5)
                            m.Result = (IntPtr)Guying_HTTOPLEFT;
                   else if (vPoint.Y >= ClientSize.Height - 5)
                            m.Result = (IntPtr)Guying_HTBOTTOMLEFT;
                    else m.Result = (IntPtr)Guying_HTLEFT;
                   else if (vPoint.X >= ClientSize.Width - 5)
                    if (vPoint.Y <= 5)
                         m.Result = (IntPtr)Guying_HTTOPRIGHT;
                       else if (vPoint.Y >= ClientSize.Height - 5)
                           m.Result = (IntPtr)Guying_HTBOTTOMRIGHT;
                        else m.Result = (IntPtr)Guying_HTRIGHT;
                 else if (vPoint.Y <= 5)
                      m.Result = (IntPtr)Guying_HTTOP;
                    else if (vPoint.Y >= ClientSize.Height - 5)
                     m.Result = (IntPtr)Guying_HTBOTTOM;
                 break;
             case 0x0201
                  m.Msg = 0x00A1
                     m.LParam = IntPtr.Zero; //默认值
                  m.WParam = new IntPtr(2);//鼠标放在标题栏内
                 base.WndProc(ref m);
                    break;
              default:
                   base.WndProc(ref m);
                   break;
          }
}

//<代码不解释>
再回到“form1设计中去”
在“属性窗口”中找到“FormBorderStyle”项,将默认的Sizable改为None;如下图所示

这下你会发现窗口标题栏都不见了,那么可以自定义窗口了;如下图所示


运行效果:
(图片文件过大,所以整合在附件里)

如果想让窗口第一次运行出现在屏幕正中央:
在“属性窗口”中的startposition项中,将WindowsDefaultLocation改为CenterScrreen即可
如图所示:



第一次发这类帖子,有可能做得不好
请多多谅解

例子下载:本帖附件
如果无法下载还有百度云:
http://pan.baidu.com/s/1eR6SjHS




heruhai
学习了,先研究一下

Dante_7
我们需要什么?
萝莉!御姐!WPF!

zmdoyouknow
本帖最后由 zmdoyouknow 于 2017-2-28 20:25 编辑

定义个鼠标拖动事件,直接DragMove()不就行了吗?
更正,WPF直接定义MouseMove,后台加上DragMove()即可。

WinForm的话:
  1.         private Point mPoint = new Point();
  2.         private void Form1_MouseDown(object sender, MouseEventArgs e)
  3.         {
  4.             mPoint.X = e.X;
  5.             mPoint.Y = e.Y;
  6.         }
  7.         private void Form1_MouseMove(object sender, MouseEventArgs e)
  8.         {
  9.             if (e.Button == MouseButtons.Left)
  10.             {
  11.                 Point myPosittion = MousePosition;
  12.                 myPosittion.Offset(-mPoint.X, -mPoint.Y);
  13.                 Location = myPosittion;
  14.             }
  15.         }
复制代码
前台事件中MouseDown定义为Form1_MouseDown
                  MouseMove定义为Form1_MouseMove
也可行

yd52013
讲真,c#启动器的教程真心少

YEPENGS
88888888888888888888888888

502mc
学习了 我刚接触C#

第一页 上一页 下一页 最后一页