问题描述
c#如何把下面代码写在类里面作为函数供外界随意调用?privateconstintWM_NCLBUTTONDOWN=0x00A1;privateconstintWM_NCHITTEST=0x84;privateconstintHT_CAPTION=0x2;privateconstintHT_CLIENT=0x1;privatevoidpictureBox1_MouseDown(objectsender,MouseEventArgse){pictureBox1.Capture=false;Messagemsg=Message.Create(Handle,WM_NCLBUTTONDOWN,(IntPtr)HT_CAPTION,IntPtr.Zero);WndProc(refmsg);}这段代码的作用是可以拖动控件来移动窗体,我想把它写成一个函数并用Control类型作为参数放在类库里面,但是不行,报错说WndProc受保护级别无法访问
解决方案
解决方案二:
添加一个事件注册的方法在里面就可以了。
解决方案三:
publicclasstest{publicintWM_NCLBUTTONDOWN{get{return0x00A1;}}}
解决方案四:
该回复于2014-01-06 23:14:22被版主删除
解决方案五:
private改个public
解决方案六:
建议你做成一个基类,让所有需要这个功能的窗体直接继承它。
解决方案七:
例如你的类库是usingSystem;usingSystem.Windows.Forms;namespaceYourNamespace{publicstaticclassClass1{privateconstintWM_NCLBUTTONDOWN=0x00A1;privateconstintWM_NCHITTEST=0x84;privateconstintHT_CAPTION=0x2;privateconstintHT_CLIENT=0x1;publicdelegatevoidWndProDelegate(refMessagex);publicstaticvoidMyDragMove(thisControlctl,IntPtrHandle,WndProDelegatewndpro){ctl.Capture=false;Messagemsg=Message.Create(Handle,WM_NCLBUTTONDOWN,(IntPtr)HT_CAPTION,IntPtr.Zero);wndpro(refmsg);}}}
那么在Form中可以这样调用:pictureBox1.MyDragMove(this.Handle,this.WndProc);
解决方案八:
这里,关键点就是,把WndPro当作参数传给类库。
解决方案九:
该回复于2014-04-29 00:10:15被版主删除
解决方案十:
做GUI, 用微软任何库的都是傻逼.有gnome,kde,qt,wxWidget等那么多好用的不用,非用最垃圾的.
解决方案十一:
建议你先做一个基类