用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. iOS-封装静态库

    最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework.在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法 ...

  2. 武汉科技大学ACM:1004: Lake and Island

    Problem Description 北园孩子的专属福利来啦~学校从北区宿舍到湖心岛修建了一条通道让北园的同学们可以上去一(kuang)同(xiu)玩(en)耍(ai),这一天,IcY向ahm001 ...

  3. PHPCMSv9 更改后台地址(测试)

    最新发布的PHPCMS V9由于采用了MVC的设计模式,所以它的后台访问地址是固定的,虽然可以通过修改路由配置文件来实现修改,但每次都修改路由配置文件对于我来说有点麻烦了,而且一不小心就会出错.这里使 ...

  4. Oracle 存储过程介绍

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  5. Apple Pay 应用 demo --备用哦

    "iOS8.1就已经有这个功能了,只是木有现在这么的火,现在的趋势是要火的节奏,因此很多电商平台B2B,P2P,C2C,X2X都有可能需要这个屌丝的付款功能了,在此简单的研究一下." ...

  6. SwitchySharp怎样设置 ( proxy switch!的设置与使用方法)

    规则列表URL  https://autoproxy-G{过}F{滤}Wlist.googlecode.com/svn/trunk/G{过}F{滤}Wlist.txt 注:不同的代{过}{滤}理  相 ...

  7. [51单片机]18B20驱动函数

    /**********DS18B20.h**********/ #include "REG52.H" #include "INTRINS.H" sbit DQ ...

  8. Android listview局部刷新和模拟应用下载(zhu)

    在android开发中,listview是比较常用的一个组件,在listview的数据需要更新的时候,一般会用notifyDataSetChanged()这个函数,但是它会更新listview中所有可 ...

  9. 利用dbms_backup_restore恢复数据库

    测试环境:OEL+11.2.0.1 实例名:orcl2 DBID:1336959433 场景:Oracle数据库的存储坏了,数据文件和控制文件全部丢失,只有数据文件的备份集,且备份集中无控制文件.(当 ...

  10. Numerical Methods with MATLAB(1)

    目前正在阅读MATLAB相关的书籍:Numerical Methods with MATLAB,现在感觉这本书写的还行, 细致基础,而且写的比较清楚,同时把malab和数值算法结合在一起. 目前刚看完 ...