如何判定事件是哪个控件触发的??

Richard345265669 2010-05-25 04:10:38
C#代码中写了一个页面刷新的事件,页面上很多控件的selectIndexChange事件都触发该事件,如何判定某次刷新是由某个控件引起的呢??谢谢了!!!
...全文
271 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jshi123 2010-05-26
  • 打赏
  • 举报
回复
直接把所有代码贴出来容易懂些
zhonghualinaaa 2010-05-26
  • 打赏
  • 举报
回复
看不懂,深奥…………
tyzs2001 2010-05-26
  • 打赏
  • 举报
回复
看你的描述好像是向根据不同的 条件显示和刷新不同的gridview。你直接判断哪个条件有值不就成了吗
Richard345265669 2010-05-26
  • 打赏
  • 举报
回复
意思是这样的,我的页面上有很多查询条件,比如时间,地点,人员等,查询出来的结果有几个gridview,
当查询条件变更时我需要refresh查询的结果,当时间更新的时候要求清空其中几个查询的结果,而别的条件变更的时候可能要更新别的,而我所有的refresh操作写成了一个事件,我就想根据触发的控件来判断刷新事件需要做的事情,我现在就是不知道如何根据sender来取得触发的控件
linkinwhite 2010-05-25
  • 打赏
  • 举报
回复
sender
wuyq11 2010-05-25
  • 打赏
  • 举报
回复
Button btn=sender as Button;
sender是事件触发者
jshi123 2010-05-25
  • 打赏
  • 举报
回复
你得到的是什么?
一克代码 2010-05-25
  • 打赏
  • 举报
回复
不知道你要干啥用,不过你可以在每个selectIndexChange里面加个提示警告不就知道是点哪了吗,每次点都提示你点了什么。
T_long 2010-05-25
  • 打赏
  • 举报
回复
不懂,学习…………
chen_ya_ping 2010-05-25
  • 打赏
  • 举报
回复
sender 这个参数来判断。
mohugomohu 2010-05-25
  • 打赏
  • 举报
回复
Response.Write(Sender.Text);
请叫我卷福 2010-05-25
  • 打赏
  • 举报
回复
需要转换一下,如果是Button,需要 Button temp=(Button)Sender;之后 temp就相当于触发事件的那个Button了,知道控件事件触发机制----委托后,就知道了
dongqi0517 2010-05-25
  • 打赏
  • 举报
回复
不知道你要干啥用,不过你可以在每个selectIndexChange里面加个提示警告不就知道是点哪了吗,每次点都提示你点了什么。
Richard345265669 2010-05-25
  • 打赏
  • 举报
回复
sender是触发事件的控件,但是我直接取该控件的时候好像得不到我需要的东西,返回的不是触发的控件
flyerwing 2010-05-25
  • 打赏
  • 举报
回复
protected void btn_Click(object sender,EventArgs e)
{
sender就是那个button
也就是事件源头,不过不一定是次BUTTON
}
一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是什么呢?请注意观看博文Android学习笔记之ViewFilpper 。 除了这个ViewFlipper,我们还需要了解一下ViewAnimator。它主要是为其中的View切换提供动画效果。 还会用到几个方法: setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。 setOutAnimation:设置View退出屏幕时候使用的动画。使用方法和setInAnimation方法一样。 showNext:调用该方法可以显示FrameLayout里面的下一个View。 showPrevious:调用该方法可以来显示FrameLayout里面的上一个View。 以及它的属性: 属性名称 描述 android:inAnimation (译者注:设置View进入屏幕时候使用的动画) android:outAnimation (译者注:设置View离开屏幕时候使用的动画) 第一个属性对应着第一个方法,第二个属性对应第二个方法。 <2>实现滑动 实现滑动就必须介绍一下GestureDetector: GestureDetector类中可以用来检测各种手势事件。 该类有两个回调接口,分别用来通知具体的事件。 GestureDetector.OnDoubleTapListener:用来通知DoubleTap事件,类似于鼠标的双击事件,该接口有如下三个回调函数: 1. onDoubleTap(MotionEvent e):通知DoubleTap手势, 2. onDoubleTapEvent(MotionEvent e):通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知); 3. onSingleTapConfirmed(MotionEvent e):用来判定该次点击是SingleTap而不是DoubleTap,如果连续点击两次就是DoubleTap手势,如果只点击一次,系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,然后触发SingleTapConfirmed事件。 GestureDetector.OnGestureListener:用来通知普通的手势事件,该接口有如下六个回调函数: 1. onDown(MotionEvent e):down事件; 2. onSingleTapUp(MotionEvent e):一次点击up事件; 3. onShowPress(MotionEvent e):down事件发生而move或则up还没发生前触发事件; 4. onLongPress(MotionEvent e):长按事件; 5. onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):滑动手势事件; 6. onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY):在屏幕上拖动事件。 本次仅用到了OnGestureListener类中的onFling方法。 其他手势事件各位可以自己回去试验。 要实现屏幕切换的话,首先需要定义一个GestureDetector: private GestureDetector mGestureDetector; 并在onCreate函数中初始化: mGestureDetector = new GestureDetector(this); 同时Activity要继承OnGestureListener接口,并实现其中的onFling方法。 另外Activity的onTouchEvent事件也要实现!! 另外本例View切换时还有动画效果。使用Animation类实现,相关的函数: ?setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本: 一个接受单个参数,类型为android.view.animation.Animation; 一个接受两个参数,类型为Context和int,分别为Context对象和定义Animation的resourceID。 ?setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。 ?showNext: 调用该函数来显示FrameLayout里面的下一个View。 ?showPrevious: 调用该函数来显示FrameLayout里面的上一个View。 在这段代码里,创建了多个IamgeView(用来显示图片),用一个for循环来添加到了ViewFlipper中。程序运行后,当用手指在屏幕上向左滑动,会显示下一个图片,用手指在屏幕上向右滑动,会显示前一个图片。实现滑动切换的主要代码都在onFling()方法中,用户按下触摸屏,快速移动后松开,就会触发这个事件。在这段代码示例中,对手指滑动的距离进行了计算,如果滑动距离大于120像素,就做切换动作,否则不做任何切换动作。 可以看到,onFling()方法有四个参数,arg0和arg1上面代码用到了,比较好理解。参数arg3和arg4是做什么用的呢?arg3和arg4实际上是X轴和Y轴上的移动速度,单位是像素/秒。结合这两个参数,可以判断滑动的速度,从而做更多的处理。 为了显示出滑动的效果,这里调用了ViewFlipper的setInAnimation()和setOutAnimation()方法设置了View进入和退出的动画。
如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧。 一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是什么呢?请注意观看博文Android学习笔记之ViewFilpper 。 除了这个ViewFlipper,我们还需要了解一下ViewAnimator。它主要是为其中的View切换提供动画效果。 还会用到几个方法: setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。 setOutAnimation:设置View退出屏幕时候使用的动画。使用方法和setInAnimation方法一样。 showNext:调用该方法可以显示FrameLayout里面的下一个View。 showPrevious:调用该方法可以来显示FrameLayout里面的上一个View。 以及它的属性: 属性名称 描述 android:inAnimation (译者注:设置View进入屏幕时候使用的动画) android:outAnimation (译者注:设置View离开屏幕时候使用的动画) 第一个属性对应着第一个方法,第二个属性对应第二个方法。 <2>实现滑动 实现滑动就必须介绍一下GestureDetector: GestureDetector类中可以用来检测各种手势事件。 该类有两个回调接口,分别用来通知具体的事件。 GestureDetector.OnDoubleTapListener:用来通知DoubleTap事件,类似于鼠标的双击事件,该接口有如下三个回调函数: 1. onDoubleTap(MotionEvent e):通知DoubleTap手势, 2. onDoubleTapEvent(MotionEvent e):通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知); 3. onSingleTapConfirmed(MotionEvent e):用来判定该次点击是SingleTap而不是DoubleTap,如果连续点击两次就是DoubleTap手势,如果只点击一次,系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,然后触发SingleTapConfirmed事件。 GestureDetector.OnGestureListener:用来通知普通的手势事件,该接口有如下六个回调函数: 1. onDown(MotionEvent e):down事件; 2. onSingleTapUp(MotionEvent e):一次点击up事件; 3. onShowPress(MotionEvent e):down事件发生而move或则up还没发生前触发事件; 4. onLongPress(MotionEvent e):长按事件; 5. onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):滑动手势事件; 6. onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY):在屏幕上拖动事件。 本次仅用到了OnGestureListener类中的onFling方法。 其他手势事件各位可以自己回去试验。 要实现屏幕切换的话,首先需要定义一个GestureDetector: private GestureDetector mGestureDetector; 并在onCreate函数中初始化: mGestureDetector = new GestureDetector(this); 同时Activity要继承OnGestureListener接口,并实现其中的onFling方法。 另外Activity的onTouchEvent事件也要实现!! 另外本例View切换时还有动画效果。使用Animation类实现,相关的函数: ?setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本: 一个接受单个参数,类型为android.view.animation.Animation; 一个接受两个参数,类型为Context和int,分别为Context对象和定义Animation的resourceID。 ?setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。 ?showNext: 调用该函数来显示FrameLayout里面的下一个View。 ?showPrevious: 调用该函数来显示FrameLayout里面的上一个View。 在这段代码里,创建了多个IamgeView(用来显示图片),用一个for循环来添加到了ViewFlipper中。程序运行后,当用手指在屏幕上向左滑动,会显示下一个图片,用手指在屏幕上向右滑动,会显示前一个图片。实现滑动切换的主要代码都在onFling()方法中,用户按下触摸屏,快速移动后松开,就会触发这个事件。在这段代码示例中,对手指滑动的距离进行了计算,如果滑动距离大于120像素,就做切换动作,否则不做任何切换动作。 可以看到,onFling()方法有四个参数,arg0和arg1上面代码用到了,比较好理解。参数arg3和arg4是做什么用的呢?arg3和arg4实际上是X轴和Y轴上的移动速度,单位是像素/秒。结合这两个参数,可以判断滑动的速度,从而做更多的处理。 为了显示出滑动的效果,这里调用了ViewFlipper的setInAnimation()和setOutAnimation()方法设置了View进入和退出的动画。  
实现功能:模拟微软计算器界面,实现四则混合运算1.键盘输入(KeyUp事件)2.无焦点(按钮失去焦点)3.实现优先级运算。比如直接输入1-2*3=-5,而不是微软计算器的-34.使用操作工厂,使用接口5.实现菜单里的复制粘贴功能6.可视化文本框7.实现中间操作结果显示8.正则表达式验证输入是否为数字9.小数点个数校验10.使用发消息_Flag实现操作符状态的判定及转换部分注释预览:失去焦点: private void text_display_GotFocus(object sender, EventArgs e) { /* * 文本框的“获取焦点”事件发生时执行的方法。每次获得焦点时,就会执行此方法,使之马上失去焦点。 * * 当某控件的Enable属性变为False的时候,它的焦点将转移到TabIndex属性值比它大1的控件上。 * 这时,如果有多个控件的TabIndex属性值同时比它大1,鼠标点击按钮或敲击键盘时候会发出“咚”的一声。 * 故在本程序中,将label_m控件的TabIndex设为1,其它的全部设为0,因此所有的控件在不可用时焦点都会转移到label_m上, * 因为label_m没有Click和KeyUp事件,所以不会出错。 * 这样就实现了全局无焦点的功能。 * */ text_display.Enabled = false; //先使文本框不可用,这时焦点转移到TabIndex比文本框大的下一个控件上 text_display.Enabled = true; //再使文本框可用,这时焦点不会返回。 }KeyUp事件: else if (e.KeyCode == Keys.NumPad1 || e.KeyCode == Keys.D1) { /* 当窗体的某个控件触发了其本身的KeyUp事件之后, * 将会调用keyUp()方法,并判断是哪个按键 * 如果是大键盘或者是小键盘的1时,便调用num_Click()方法。 * 参数是no_1和e。 * 在这里的no_1指的是按钮no_1,e是KeyUp事件 * no_1是按钮,参数格式正确;而e是KeyUp事件,也是事件的一种。KeyEventHandler当然也是EventHandler的一部分。 * 所以调用了之num_Click()后一切按照no_1按钮事件的操作执行 * 所以no_1按钮的这一句 * this.no_1.KeyUp += new System.Windows.Forms.KeyEventHandler(this.num_Click); * 可以不写 */ num_Click(no_1, e); }小数点点击的校验: private void dot_Click(object sender, EventArgs e) { if (!dotFlag) //没点击的情况下 { if (operFlag) //如果点击了运算符,就将文本换为"0.",并将小数点设为已点击 { text_display.Text = "0."; dotFlag = true; } else if (text_display.Text.Equals("0.")) //如果没有点击运算符,切当前文本是"0.",便保持现状但将小数点设为已点击 { dotFlag = true; } else if (text_display.Text.Equals("0") || text_display.Text.Equals("")) { text_display.Text = "0."; dotFlag = true; } else //其他情况直接添加并将小数点设为已点击 { text_display.Text = text_display.Text + "."; dotFlag = true; } } else //如果已点击则什么也不做 { } enterFlag = false; label_m.Focus(); //键盘按键之后焦点由下面的各个_GotFocus()方法控制;鼠标点击之后的焦点有这条语句控制,同样使焦点转移到label_m上。 }
益德电子科技(杭州)有限公司 EDAC ELECTRONICS TECHNOLOGY (HANGZHOU) CO., LTD. 日期(Date): 2013-11-16 Cognex培训教程 益德电子科技(杭州)有限公司EDAC Electronic Technology (Hangzhou) Co., Ltd Cognex培训教程全文共15页,当前为第1页。 名称 品牌 型号 数量 500万康耐视相机 Cognex IS5605-11 1 0513远心镜头 VST VS-TEC0513 1 相机以太网通信线 Cognex CCB-84901-1002-05 1 IO线 Cognex CCB-84901-0901-05 1 IO转接板 Cognex CIO-1400/CIO-MICRO 1 常用500万Cognex配件结构 Cognex培训教程全文共15页,当前为第2页。 (一) 相机的连接 设备开启24v电源后,将相机的电源线(绿色)和I/O线连接好,启动In-Sight Explorer 登录管理员帐户,账号是admin,密码不用 默认为admin,点击菜单栏的"系统"选项的"将传感器/设备添加到网络"如图 等待搜索相机. Cognex培训教程全文共15页,当前为第3页。 (二) IP地址设置 搜索到相机后,选择一个相机,填写相应的内容,不要自动获得IP地址,选择"使用下面网络设置" 主机名:自定义(自己方便识别就好) IP地址:自定义,一般都是192.168.1.X,根据自己本地网络而定,不要与下一个相机的IP和电脑本地IP有冲突和重复即可,如果不知道自己电脑IP,点击下面"复制PC网络设置"就好 最后应用 然后重启24V电源,点击菜单下的"查看——In-Sight网络"快捷键"CTRL+SHIFT+1"查看网络此时就出现了你添加的相机名称了 Cognex培训教程全文共15页,当前为第4页。 (三)Image的触发 Image可以有两种设置触发模式 启动了In-Sight Explorer 之后,打开电子表格,如果你使用的是EasyBuilder视图可略过这一步, 默认不是电子表格形式,在"系统菜单——选项——作业视图"把"使用电子表格视图为默认视图" 勾选上,重新In-Sight Explorer。 (1)好了之后双击A0单元格"Image" 在触发器选项里可以选择相应的触发形式 (2)EasyBuilder视图下的话就是在第一步 "设置图像" Cognex培训教程全文共15页,当前为第5页。 (四)快捷手动触发和连续触发显示 在脱机状态下,点击"图像"菜单下可以实现,如图 也可以通过快捷栏实现 手动触发 连续触发 Cognex培训教程全文共15页,当前为第6页。 (五)模型匹配 1.搜索模型:鼠标点住控件,拖动到电子表格 2.搜索模型,抓取特征 Cognex培训教程全文共15页,当前为第7页。 1.固定的使用 固定起位置补正的作用,在后面用的抓取边缘时都需要对边缘进行固定 (六)抓取边缘 引用:行,COL,角度 Cognex培训教程全文共15页,当前为第8页。 2.抓取直线 选用"Findline"工具,抓取边缘直线,如右图所示 选择边缘的极性 选择搜索框的范围 Cognex培训教程全文共15页,当前为第9页。 3.抓取圆 选用"FindCircle"工具,抓取边缘直线,如右图所示 通过选取不同控件工具"Edges"可以实现抓取不同各种产品边缘。 Cognex培训教程全文共15页,当前为第10页。 (六)计算 计算圆心到直线的距离,可以通过"几何"--"测量"--"LineToCircle"控件,计算直线到圆的最短距离。如下图所示 引用直线跟圆的参数 Cognex培训教程全文共15页,当前为第11页。 (七)OK跟NG判定 设定一个取值范围"180"至"190",用"InRange()"函数,G41表示引用数据的位置,180,190表示公差范围 "186.104"在公差范围内,二进制值被赋予"1" 判断"ok""ng","1"为"ok","0"为"ng" Cognex培训教程全文共15页,当前为第12页。 (八)通讯 1.把数据变换为字符串,如右图所示控件 添加所需数据 Cognex培训教程全文共15页,当前为第13页。 读取设备"A21" 2.(1)通过TCP协议传输数据,添加控件如右图所示 写入事件Image,设备,字符串入 写入数据到设备 Cognex培训教程全文共15页,当前为第14页。 (2)通过FTP服务器传输数据 FTP是直接把数据转换成文本,输出到电脑 Cognex培训教程全文共15页,当前为第15页。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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