用VS2008开发C#语言wince程序,发现程序里右键捕获不到,采集器上点也没反应,上网查好像有个c++版本的,看不懂啊,下面我给出C#实现右键效果的解决方案,请各位多多优化。

首先控件ContextMenu 和 Timer

​设置contextMenu1

在dataGrid里实现右键点击,事件dataGrid1_MouseDown 按下鼠标按钮事件。

上代码

 

public int _x;
public int _y;
private void dataGrid1_MouseDown(object sender, MouseEventArgs e)
{
System.Drawing.Point Pt = new Point(e.X, e.Y);
DataGrid.HitTestInfo Ht = dataGrid1.HitTest(Pt.X, Pt.Y);
//this.dataGrid1.CurrentCell = new DataGridCell(Ht.Row, Ht.Column);
//this.dataGrid1.Select(Ht.Row);
if (Ht.Row >= 0 && Ht.Column >= 0)
{
_x = e.X + 2;//记录鼠标当前坐标
_y = e.Y + 1;//同上(priorPoint前面已经声明)
SHRGINFO shr = new SHRGINFO();
shr.cbSize = Marshal.SizeOf(typeof(SHRGINFO));
shr.dwFlags = SHRGFLags.SHRG_RETURNCMD;
shr.ptDownX = MousePosition.X - 2;
shr.ptDownY = MousePosition.Y - 8;
shr.hwndClient = GetActiveWindow();
int ret = SHRecognizeGesture(ref shr);
if (ret == 1000)
{
timer1.Enabled = true;//开启计时器
}
}
}
internal struct SHRGINFO
{
public int cbSize;
public IntPtr hwndClient;
public int ptDownX;
public int ptDownY;
public SHRGFLags dwFlags;
}
[Flags]
internal enum SHRGFLags
{
SHRG_RETURNCMD = 0x00000001,
SHRG_NOTIFYPARENT = 0x00000002,
SHRG_LONGDELAY = 0x00000008,
SHRG_NOANIMATION = 0x00000010,
}
[DllImport("aygshell")]
extern private static int SHRecognizeGesture(ref SHRGINFO shr);
[DllImport("coredll.dll", SetLastError = true)]
public static extern IntPtr GetActiveWindow();


DataGrid.HitTestInfo

我也是第一次用,把坐标传进去就能知道当前左边是哪列哪行,有没有数据,下面做出判断有数据了才显示。

ret == 1000圆圈正好一圈
       [DllImport("aygshell")]
        extern private static int SHRecognizeGesture(ref SHRGINFO shr);
        [DllImport("coredll.dll", SetLastError = true)]

        public static extern IntPtr GetActiveWindow();  

启用采集器DLL接口程序。
MousePosition.X - 2 
当前鼠标-2这个是控制圆圈的,不在鼠标中建,我给调了调,
_X  _Y  会在时间里用到。timer1的事件,如果在此弹出右键菜单因为资源没有被释放,所以会报错的,只能启动下一个事件,我写在了timer1_Tick里,并使用timer1.Enabled = true启用事件
  

private void timer1_Tick(object sender, EventArgs e)
{
string pids = this.dataGrid1[this.dataGrid1.CurrentRowIndex, 0].ToString();
if (pids != "")
{
contextMenu1.Show(dataGrid1, new Point(_x, _y));//弹出上下文菜单
timer1.Enabled = false;
}
}

要写上contextMenu1绑定的控件dataGrid1

this.dataGrid1[this.dataGrid1.CurrentRowIndex, 0].ToString();可获得当前选中行某列。

C# winCE5.0开发右键效果解决方案的更多相关文章

  1. WinCE5.0开发环境的建立

    目前WinCE5.0的开发工具主要有以下几种:Platform Builder5.0.EVC4.0+SP4.Visual Studio2005.其中Platform Builder主要用于定制WinC ...

  2. css3.0新属性效果在ie下的解决方案(兼容性)

    css3.0增加的新属性,如投影.渐变.旋转.圆角等等!这些新标准属性在ie6.ie7.ie8浏览器版本里得不到很好的支持,相信ie以后的新版本也会支持这些新属性的.目前ie6.ie7.ie8浏览器不 ...

  3. NX11.0和VS2013 创建NXOpen 开发模版失败解决方案【转载】

    转载自PLM之家论坛 NX11.0和VS2013 创建NXOpen 开发模版失败解决方案 首先我觉得这个可能是西门子疏忽,基本上每个大版本没有补丁前都有类似问题,下面来说说怎么解决吧.注意这里版本,N ...

  4. Telerik JustDecompile 2014.1.255.0 开发版(.NET反编译神器,免费下载)

    Telerik JustDecompile是Telerik公司推出一个免费的.NET反编译工具,支持插件与Visual Studio 2015~2013集成,还能够创建Visual Studio Pr ...

  5. 用函数式编程,从0开发3D引擎和编辑器(三):初步需求分析

    大家好,本文介绍了Wonder的高层需求和本系列对应的具体功能点. 确定Wonder高层需求 业务目标 Wonder是web端3D开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态. ...

  6. [开源地址] 放弃Flink,.NET5.0开发CSharpFlink,简要设计、部署及二次开发说明。

    github地址:https://github.com/wxzz/CSharpFlinkgitee地址:https://gitee.com/wxzz/CSharpFlink 1 概述及背景 我们有一个 ...

  7. ASP.NET Core 1.0 开发记录

    官方资料: https://github.com/dotnet/core https://docs.microsoft.com/en-us/aspnet/core https://docs.micro ...

  8. 用SignalR 2.0开发客服系统[系列2:实现聊天室]

    前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...

  9. 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 真的很感谢大家的支持,今天发表系列3 ...

随机推荐

  1. 武汉科技大学ACM :1008: 小t和小w

    Problem Description 小t最近学了C语言,他想要在女朋友小w面前展示一下自己的能力,小w喜欢如样例所示的图形, 想让小t写一个程序来输出这样的图形,小t拿到后感觉有点困难,小t不想在 ...

  2. c语言学习,模拟栈操作

    1.stack.c模拟栈操作函数的实现 #include<stdio.h> #include<stdlib.h> ; static char *stack;//数据栈 ;//栈 ...

  3. 晓说智能指针shared_ptr为何可以实现跨模块分配和释放内存

    最近做项目, 有个地方是外包人员写的, 其中有个函数,大致这样 void getInfo(std::shared_ptr<Info>& outInfo); 这个函数是一个dll(链 ...

  4. linux笔记2.21

    命令dmesg显示本次内核启动信息 init是系统运行的第一个进程 Linux运行级别: 0   关机 1   单用户模式 2   不带网络的多用户模式 3   命令行多用户模式  4   未使用 5 ...

  5. PHP判断远程图片或文件是否存在

    PHP判断远程图片是否存在,此方法同样适用于判断远程文件是否存在,这是一种既然有效率且又准确的方法,建议采用此方法,以往使用get_headers()方法判断都是有问题的: function chec ...

  6. C语言杂记 -- 简陋的<深入理解计算机系统>笔记

    程序的表示 l 32位64位操作系统是由CPU寄存器的位数决定,即虚拟寻址的范围为2^32.2^64. l 字节的大端小端法是以字节为基本单位的:比如十进制的7在十六位机器上表示 · 地址 100 1 ...

  7. Web之CSS开发技巧: CSS @media

    CSS @media 规则非常适合于将 HTML 或 XML 文档定位为目标输出方法.目前,print 媒体的使用非常普遍,与实现单独的 “可打印版本” 相比,print 提供了更加整洁的方式来创建打 ...

  8. 针对access数据库的增删改查

    1.执行查询操作:(ExecuteReader方法) string myConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data ...

  9. Owncloud中文目錄包裹下載

    Owncloud提供私有雲端儲存環境的自由軟體解決方案,目前4.5版中文支援已經很完整,但是早期ZIP壓縮檔內的檔名不支援utf-8,所以使用ZIP格式下載整個目錄或多個檔案時大部分解縮軟體無法正確處 ...

  10. Basefragment的封装使用

    1.前言 封装作为面向对象的三大特性之一,在我们平时的coding过程用的那是非常的多的.大多数时候,我们可以根据封装情况评判代码的质量水平. 本文主要讲解的是fragment的封装.大体上,在项目的 ...