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受保护级别无法访问
...全文
526 10 打赏 收藏 举报
写回复
用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
u013235485 2014-01-06
  • 打赏
  • 举报
回复

public class test
    {
       public int WM_NCLBUTTONDOWN
       {
           get { return 0x00A1; }
       }
    }
jason成都 2014-01-06
  • 打赏
  • 举报
回复
添加一个事件注册的方法在里面就可以了。
下方可见数据集可视化效果。 【数据集概况】 · 检测类别(中文):[桅杆(mast)] · 训练集:2043 张 · 验证集:195 张 · 测试集:97 张 · 总计:2335 张 该数据集聚焦于运动场场景中的桅杆目标检测,通过采集多样化环境下的图像数据,为智能监控系统提供精准的检测基础,有效提升场景管理效率与安全性。数据集包含训练集2043张、验证集195张和测试集97张,训练集占比合理,验证集与测试集比例科学,充分保障模型训练的充分性和评估结果的可靠性。标注工作严谨规范,所有桅杆目标均被精确框定,边界框与物体轮廓高度吻合,标注质量达到行业高标准,为模型训练提供坚实保障。该... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 34 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9948** mAP50-95 | 0.8617 Precision | 0.9899 Recall | 0.9999 train/box_loss | 0.6284 train/cls_loss | 0.2131 val/box_loss | 0.6118 val/cls_loss | 0.1750 【训练过程分析】 34 轮训练后 mAP50 达到 0.9948,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。mAP50-95 为 0.8617,和 mAP50 差距仅 0.13,框的定位精度也很扎实。 【模型性能评估】 Precision 0.9899、Recall 0.9999,精召双高,模型对桅杆的检测能力强。...

111,128

社区成员

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

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

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