c#如何把下面代码写在类里面作为函数供外界随意调用?

emhost 2014-01-06 08:55:36
c#如何把下面代码写在类里面作为函数供外界随意调用?
private const int WM_NCLBUTTONDOWN = 0x00A1;
private const int WM_NCHITTEST = 0x84;
private const int HT_CAPTION = 0x2;
private const int HT_CLIENT = 0x1;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
pictureBox1.Capture = false;
Message msg = Message.Create(Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
WndProc(ref msg);
}
这段代码的作用是可以拖动控件来移动窗体,我想把它写成一个函数并用Control类型作为参数放在类库里面,但是不行,报错说WndProc受保护级别无法访问
...全文
456 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
普世编程技术 2014-01-07
  • 打赏
  • 举报
回复
做GUI, 用微软任何库的都是傻逼. 有gnome, kde, qt, wxWidget等那么多好用的不用, 非用最垃圾的.
  • 打赏
  • 举报
回复
这里,关键点就是,把WndPro当作参数传给类库。
  • 打赏
  • 举报
回复
例如你的类库是
using System;
using System.Windows.Forms;

namespace YourNamespace
{
    public static class Class1
    {
        private const int WM_NCLBUTTONDOWN = 0x00A1;
        private const int WM_NCHITTEST = 0x84;
        private const int HT_CAPTION = 0x2;
        private const int HT_CLIENT = 0x1;

        public delegate void WndProDelegate(ref Message x);

        public static void MyDragMove(this Control ctl, IntPtr Handle, WndProDelegate wndpro)
        {
            ctl.Capture = false;
            Message msg = Message.Create(Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
            wndpro(ref msg);
        }
    }
}
那么在Form中可以这样调用:
pictureBox1.MyDragMove(this.Handle, this.WndProc);
yuanzihahaha 2014-01-07
  • 打赏
  • 举报
回复
建议你先做一个基类
threenewbee 2014-01-06
  • 打赏
  • 举报
回复
建议你做成一个基类,让所有需要这个功能的窗体直接继承它。
Regan-lin 2014-01-06
  • 打赏
  • 举报
回复
private改个public
F_U_C_K_GFW 2014-01-06
  • 打赏
  • 举报
回复

public class test
    {
       public int WM_NCLBUTTONDOWN
       {
           get { return 0x00A1; }
       }
    }
jason成都 2014-01-06
  • 打赏
  • 举报
回复
添加一个事件注册的方法在里面就可以了。

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧