本文就来探讨一下在C#中和这二个主体相关的事件的处理过程。
一.本文介绍的程
本文就来探讨一下在C#中和这二个主体相关的事件的处理过程。
一.本文介绍的程序设计和运行的软件环境: (1).Windows xp (2)..net framework 2.0 二.C#中处理鼠标相关的事件: 鼠标相关的事件大致有六种,分别是 : "MouseHover"、"MouseLeave"、"MouseEnter"、"MouseMove"、"MouseDown"和"MouseUp"。
(1).如何在C#程序中定义这些事件: 在C#中是通过不同的Delegate来描述上述事件,其中描述"MouseHover"、"MouseLeave"、"MouseEnter"事件的Delegate是"EventHandler",而描述后面的三个事件的Delegate是"MouseEventHandler"来描述。
这二个Delegate分别被封装在不同的命名空间,其中"EventHandler"被封装在"System"命名空间;
"MouseEventHandler"被封装在"Syetem.Windows.Froms"命名空间中的。
在为"MouseHover"、"MouseLeave"、"MouseEnter"事件通过数据的类是"EventArgs",他也被封装在"System"命名空间中;
而为后面的三个事件提供数据的类是"MouseEventArgs",他却被封装在"Syetem.Windows.Froms"命名空间。
以上这些就决定了在C#中定义这些事件和响应这些事件有着不同的处理办法。
下面就来介绍这些不同点。
对于上述的前三个事件,是用以下语法来定义的: "组件名称"."事件名称"+= new System.EventHandler("事件名称");
下面是程序中具体实现代码: button1.MouseLeave += new Syetem.EvenHandler(button1_MLeave);
在完成了事件的定义以后,就要在程序中加入响应此事件的代码,否则程序编译的时候会报错。
下面是响应上面事件的基本结构。
private void button1_MLeave ( object sender , System.EventArgs e ) { 此处加入响应此事件的代码 } 定义"MouseMove"、"MouseDown"和"MouseUp"事件的语法和前面介绍的三个事件大致相同,具体如下: "组件名称"."事件名称"+= new System.Windows.Forms. MouseEventHandler("事件名称");
下面是程序中具体实现代码: button1.MouseMove += new System.Windows.Forms.MouseEventHandler(button1_MMove);
下面是响应上面事件的基本结构: private void button1_MMove ( object sender , System.Windows.Forms. MouseEventArgs e ) { 此处加入响应此事件的代码 } 注释:在上述程序中的"button1"是定义的一个按钮组件。
2).鼠标相关事件中的典型问题处理办法: 在掌握了C#中定义和鼠标相关的事件,我们就来探讨一下和鼠标相关事件的典型问题。
其一是读取鼠标的当前位置;
其二是判定到底是那个鼠标按键按动。
判定鼠标的位置可以通过事件"MouseMove"来处理,在"MouseEventArgs"类中提供了二个属性"X"和"Y",来判定当前鼠标纵坐标和横坐标。
而判定鼠标按键的按动情况,可以通过事件"MouseDown"来处理,并且在"MouseEventArgs"类中也提供了一个属性"Button"来判定鼠标按键情况。
根据这些知识,可以得到用C#编写的读取鼠标当前位置和判定鼠标按键情况的程序代码。
下面就是此代码(mouse.cs)和此代码编译后运行界面: 图01:用C#读取鼠标位置和鼠标按键的程序运行界面 mouse.cs的源程序代码如下: using System ; using System.Drawing ; using System.Collections ; using System.ComponentModel ; using System.Windows.Forms ; using System.Data ; public class Form1 : Form { private System.ComponentModel.Container components = null ; public Form1 ( ) { file://初始化窗体中的各个组件 InitializeComponent ( ) ; } file://清除程序中使用过的资源 protected override void Dispose ( bool disposing ) { if ( disposing ) { if (components != null) { components.Dispose ( ) ; } } base.Dispose ( disposing ) ; } private void InitializeComponent ( ) { this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14) ; this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ; this.Name = "Form1" ; this.Text = "C#处理鼠标按动事件!" ; file://为鼠标按动定义一个事件处理过程"Form1_MouseDown" this.MouseDown += new MouseEventHandler ( Form1_MouseDown ) ; file://为鼠标移动定义一个事件处理过程"Form1_MouseMove" this.MouseMove += new MouseEventHandler ( Form1_OnMouseMove ) ; } static void Main ( ) { Application.Run ( new Form1 ( ) ) ; } private void Form1_OnMouseMove ( object sender , MouseEventArgs e ) { this.Text = "当前鼠标的位置为:( " + e.X + " , " + e.Y + ")" ; } private void Form1_MouseDown ( object sender , MouseEventArgs e ) { file://响应鼠标的不同按键 if ( e.Button == MouseButtons.Left ) { MessageBox.Show ( "按动鼠标左键!" ) ; } if ( e.Button == MouseButtons.Middle ) { MessageBox.Show ( "按动鼠标中键!") ; } if ( e.Button == MouseButtons.Right ) { MessageBox.Show ( "按动鼠标右键!") ; } } } 三.C#中处理和键盘相关的事件: 在C#中和键盘相关的事件相对比较少,大致就三种:"KeyDown"、"KeyUp"和"KeyPress"。
(1).如何在C#程序中定义这些事件: C#中描述"KeyDown"、"KeyUp"的事件的Delegate是"KeyEventHandler"。
而描述"KeyPress"所用的Delegate是"KeyPressEventHandler"。
这二个Delegate都被封装在命名空间"Syetem.Windows.Froms"中。
为"KeyDown"、"KeyUp"的事件提供数据的类是"KeyEventArgs"。
而为"KeyPress"事件提供数据的类是"KeyPressEventArgs"。
同样这二者也被封装在命名空间"Syetem.Windows.Froms"中。
在C#程序定义"KeyDown"、"KeyUp"事件的语法如下: "组件名称"."事件名称"+= new Syetem.Windows.Froms. KeyEventHandler("事件名称");
下面是程序中具体实现代码: button1. KeyUp += new Syetem.Windows.Froms. KeyEventHandler(button1_KUp);
下面是响应上面事件的基本结构。
private void button1_KUp ( object sender , Syetem.Windows.Froms. KeyEventArgs e ) { 此处加入响应此事件的代码 } 在C#程序定义"KeyPress"事件的语法如下: "组件名称"."事件名称"+= new Syetem.Windows.Froms. KeyPressEventHandler("事件名称");
下面是程序中具体实现代码: button1. KeyPress += new Syetem.Windows.Froms. KeyPressEventArgs(button1_KPress);
在完成了事件的定义以后,就要在程序中加入响应此事件的代码,否则程序编译的时候会报错。
下面是响应上面事件的基本结构。
private void button1_KPress ( object sender , Syetem.Windows.Froms. KeyPressEventArgs e ) { 此处加入响应此事件的代码 } 注释:程序中出现的"button1"是定义的一个按钮组件。
( 2).和键盘相关事件中的典型问题处理办法: 和键盘相关的典型问题无非就是判定到底是哪个按键被按动。
通过上面的三个事件都可以完成。
并且在"KeyEventArgs"类中通过了一个属性"KeyCode",可以用他来读取当前按键。
所以就在"KeyUp"或者"KeyDown"事件中处理这个问题。
根据上面这些知识,可以得到用C#编写读取读取按键的程序代码,下面就是此代码(key.cs)和此代码运行后的界面: 图02:用C#读取键盘按键的程序运行界面 key.cs的代码如下: using System ; using System.Drawing ; using System.Collections ; using System.ComponentModel ; using System.Windows.Forms ; using System.Data ; public class Form1 : Form { private System.ComponentModel.Container components = null ; public Form1 ( ) { file://初始化窗体中的各个组件 InitializeComponent ( ) ; } protected override void Dispose ( bool disposing ) { file://清除程序中使用过的资源 if ( disposing ) { if ( components != null ) { components.Dispose ( ) ; } } base.Dispose ( disposing ) ; } private void InitializeComponent ( ) { this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ; this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ; this.Name = "Form1" ; this.Text = "C#处理键盘事件!" ; file://为按键的按动定义一个事件处理过程"Form1_KeyUp" this.KeyUp += new KeyEventHandler ( this.Form1_KeyUp ) ; } static void Main ( ) { Application.Run ( new Form1 ( ) ) ; } file://显示你所按动的按键名称 private void Form1_KeyUp ( object sender , KeyEventArgs e ) { MessageBox.Show ( e.KeyCode.ToString ( ) , "您所按动的健为:" ) ; } } 四.总结: 本文介绍了在C#中如何定义和鼠标和键盘相关的事件和在这些事件中一些典型问题的处理办法。
虽然这些知识最为基本,但也最为重要,因为在程序设计中,这些问题和我们打交道的机会最多。
当然和鼠标和键盘相关的事件和问题还有许多,可以参照根据上面. 中,简单,的,键盘,和,鼠标,事件,处理,完整,在,
从食材源头到餐桌美学 一场关于“如何激发中西美食烹饪创新,提供更好行业交流平台”的沙龙率先点燃了思维火花,来自上海、江苏、浙江、安徽等多地餐饮行业协会、餐饮品牌、供应链企业代表及行业专家共话新趋势。
味Fusion创意厨房创始人、中国商业技师协会餐饮分会总干事钱以斌开门见山地指出了当下餐饮业的现实处境:“现在的食客既要好吃又要好看,人人都是自媒体,这道菜如果不上相,很难在朋友圈生存。
”这一观点引发了在场嘉宾的强烈共鸣。
苏州市相城区政协常委、中国烹饪大师金洪男分享了他对食材的理解:“美食需要与时俱进,但关键要在守正的基础上创新。
就像苏州、台州的小海鲜,从菜场拿货到码头直采,再到现在的船头直达,我们对时令、产地的敬畏从未改变。
最好的鲜味从来都不是靠调味,而是靠食材自身的‘鲜味’。
”晨瑞餐饮董事长耿传敏则用具体的运营细节印证了这一观点,他透露团队为保证海鲜品质,每周驱车往返宁波、舟山采购四五次,“只有源头鲜,才有桌上菜”。
随后,讨论向餐饮供应链与后端支持延伸,探讨如何“打破食材供应链壁垒,建立良好供销平台”。
泓0871臻选云南菜创始人刘新介绍,得益于冷链和空运,云南的野生菌、香茅草已实现“12小时从深山到餐桌”。
上海联豪食品有限公司销售总监郭青坡表示,作为光明旗下的企业,他们通过标准化的文火牛肉、牛仔骨等产品为餐厅提供稳定支持。
百仕达食品产业华饪科技公司创始人杨刚则提出,AI炒菜机器人替代的是重复的体力劳动,目的是让厨师回归研发,专注于菜品创新。
主厨同台竞技,共享环球美食 随后,“环球美食巡礼开锅启动仪式”举行。
开锅仪式后,五位来自中餐、西餐、云南菜、拉丁菜及墨西哥菜等领域的资深主厨同台献艺,现场瞬间被浓郁的香气包围。
CHIHUAHUA墨西哥餐厅创始人及主厨安娜·埃斯特凡尼亚·卡萨斯(Ana Estefania Casas)成为了焦点。
她不仅带来了地道的异国风味,更在现场分享了如何通过一道文火烹制的手撕猪肉卷饼打破墨西哥食物的“快餐”刻板印象。
她向观众展示了如何用中式慢火技法赋予这道传统街头美食全新的灵魂,让宾客在唇齿间体验到高级料理的细腻与层次感。
另一边,AZUL RESTAURANT GROUP创始人兼烹饪总监爱德华多·巴尔加(Eduardo Vargas)则在精心烹制招牌海鲜烩,将南美的热情滋味融入其中,他介绍道:“这酱汁里有番茄莎莎、秘制黄辣椒,餐厅的不少食谱来自奶奶传下来的秘方。
” 在泓0871臻选云南菜的展台前,北京店厨师长杨雄毅正一个个撬开盐壳,为观众展示一道隐藏菜单“盐焗版纳香草巴浪鱼”,他介绍,将香茅草、大香菜、香柳等七八种云南特有香料切碎塞入鱼腹,通过“包烧”的特殊烧制工艺,一定能充分地锁住油脂。
泓0871臻选云南菜上海店总负责人李家良在现场解释了这道菜的食材逻辑:“巴浪鱼讲究‘胖养’,虽然野生巴浪鱼营养价值低且价格低廉,但经过人工养殖后,其价值能翻10倍。
我们选用外地优质的养殖食材,结合云南特有的香料,通过傣族传统的包烧技法,让鱼肉鲜嫩且不油腻。
” 现场的品鉴区同样人头攒动,多道融合了地域特色与国际风味的创新菜品轮番登场,引得食客驻足品尝。
专业观众刘婷对CHIHUAHUA墨西哥餐厅展台情有独钟,她表示手撕猪肉卷饼的味道很符合她的口味,外层的玉米饼皮香味非常重,里面包裹的猪肉经过辣椒和其他香料的炒制香气四溢。
另一位观众李先生则偏好来自泓0871的巴浪鱼,“鱼的鲜味和香料的味道有机融合在一起,做到了‘口舌生津’,为了这道菜,我很愿意去餐厅再尝试一次。
” 作为2026年城际餐饮交流会的重要板块,本次“环球美食巡礼”不仅展示了从城际到国际的多元风味,也为餐饮行业跨区域合作搭建了务实平台。
上海环球美食汇”第二季度的主题活动由静安区重点承办,立足南京西路、静安寺、苏河湾、大宁等商圈与滨水空间的独特优势,将高端餐饮、海派本帮、国际风味与网红首店串联起来,以美食赋能商圈升级。
上海市商业联合会党委书记、常务副会长兼秘书长吴星宝表示,未来上海将紧扣“环球美食汇”主题系列活动,以城际交流为纽带,持续引入更多国内外美食资源,推动环球美食的双向流动与常态化的行业互动。
港门粉,鲜掉眉毛的海鲜粉!猪骨汤底+鲜虾+粉肠+瘦肉,汤底清甜不油腻,米粉软糯入味,撒上葱花和炸虾饼,一口汤一口粉,早八人必吃的美食。
椰子水清补凉,三亚夏日续命神器,椰奶打底,加上西瓜、西米、芋圆、绿豆、鹌鹑蛋,满满一碗料超足,椰香浓郁、冰凉爽滑,逛吃热了来一碗,瞬间解暑。
鸡屎藤粑仔,别被名字劝退!本地特色甜品,,手工搓的鸡屎藤丸子,搭配红糖姜糖水,软糯Q弹,带着草本清香,暖胃又养生,女生经期吃超友好,街边小店都能买到。
阿婆粽子,超大一个!糯米软糯入味,内馅是咸蛋黄+五花肉+虾米,料超足,咸香软糯,油而不腻,早餐吃一个顶半天,群众街阿婆摊最正宗,现包现卖。
炸炸,三亚版“麻辣烫”!万物皆可炸,茄子、空心菜、芋头、炸饺子,刷上秘制甜辣酱,外酥里嫩,甜辣开胃,闭眼点不踩雷。
芒果肠粉,椰香+果香双重暴击!超薄椰奶皮裹着新鲜芒果肉,淋上椰浆,冰冰凉凉,甜而不腻,口感超丝滑,甜品脑袋必冲。
甜豆腐脑,三亚独一份的甜口豆腐脑!滑嫩豆腐脑+绵白糖+姜糖水,温润香甜,带着姜汁微辣,暖胃又解腻,和内地咸口完全不同,一定要试 来三亚一定要感受这份市井烟火气,不用花大钱,就能解锁地道海岛风味,吃货们快冲,把这些小吃挨个打卡一遍。