第10章 键盘和鼠标事件(选学或自学)
第10章 鼠标与键盘事件的处理
接口事件的处理全过程(鼠标的移动和鼠标的拖动)。 本例中还应注意的另一个技巧是,拖动鼠标时(按 着鼠标左键),我们就获得了鼠标拖动时的坐标,同时 调用repaint()方法画下这个坐时,程序首先清除paint()方 法以前所画的内容,然后再调用paint()方法。但有时 我们不想让程序清除paint()方法以前所画的所有内容。 实际上当我们调用repaint()方法时,程序自动地调用 update(Graphics g)方法(从父类Component继承下来 的)清除paint()方法以前所画的内容,然后再调用 paint()方法。因此我们可以在我们的小程序中重写这 个update(Graphics g)方法(即隐藏父类的方法),根据 需要来清除哪些部分或保留哪些部分。在这个例子中, 我们在update(Graphics g)方法体内没有清除以前所画 的内容(如果准备清除可使用clearRect方法)而是继续 调用paint()方法。
第三节 KeyListener接口及事件处理
一、KeyListener接口及其方法 接口及其方法 当按下、释放或敲击键盘上一个键时就发生了键 盘事件,在Java l.2事件模式中,必须要有发生事件 的事件源。当一个组件处于激活状态时,敲击键盘上 一个键就导致这个组件上发生了键盘事件。 事件源使用addKeyListener方法获得监视器。 监视器是一个对象,创建该对象的类必须实现接 口KeyListener。接口KeyListener中有3个方法: public void keyPressed(KeyEvent e) public void keyTyped(KeyEvent e) public void KeyReleased(KeyEvent e) 当你按下键盘上某个键时,监视器就会发现,然后 方法keyPressed方法会自动执行,并且KeyEvent类
小学信息技术一年级上册第10课《单击移动物体》教案
一、教学内容
本节课选自小学信息技术一年级上册第十章《小鼠标,大作用》,主题为《单击移动物体》。教学内容主要包括:1.了解鼠标的基本功能及操作;2.学习使用鼠标左键单击来移动物体;3.通过趣味游戏练习单击操作,培养动手操作能力和空间想象力;4.引导学生养成良好的计算机操作习惯。具体内容包括:单击鼠标左键移动物体、双击鼠标左键执行命令以及拖拽操作等。本节课以实践操作为主,让学生在动手实践中掌握鼠标的基本使用方法,提高信息技术素养。
3.重点难点解析:在讲授过程中,我会特别强调鼠标左键单击的正确姿势和操作要领。对于难点部分,我会通过举例和比较来帮助大家理解,比如单击与双击的区别。
(三)实践活动(用时10分钟)
1.分组讨论:学生们将分成若干小组,每组讨论一个与鼠标左键单击相关的实际问题,如如何用鼠标选择不同的对象。
2.实验操作:为了加深理解,我们将进行一个简单的实验操作。学生们将使用鼠标左键单击来移动物体,这个操作将演示单击操作的基本原理。
三、教学难点与重点
1.教学重点
(1)鼠标左键单击操作:掌握鼠标左键单击移动物体的基本方法,这是本节课的核心内容,教师在教学过程中需反复演示和强调。
(2)趣味游戏实践:通过趣味游戏,让学生在实践中巩固鼠标单击操作,培养动手操作能力和空间想象力。
(3)操作规范:教育学生遵守计算机操作规范,养成良好的操作习惯。
3.成果展示:每个小组将向全班展示他们的讨论成果和实验操作的结果。
(四)学生小组讨论(用时10分钟)
1.讨论主题:学生将围绕“鼠标左键单击在实际生活中的应用”这一主题展开讨论。他们将被鼓励提出自己的观点和想法,并与其他小组成员进行交流。
2.引导与启发:在讨论过程中,我将作为一个引导者,帮助学生发现问题、分析问题并解决问题。我会提出一些开放性的问题来启发他们的思考,比如如何提高鼠标操作的准确性。
第十章键盘鼠标事件过程
KeyPress事件与KeyDown/KeyUp事件的区别
前者返回的是字符的ASCII码,后者返回的是“键”的代码 例如,当按“A”和“a”时将返回同一个KeyCode值 ,而对
button 参数
是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮 (位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其 中仅有一位被设置,指示出引起该事件的那个按钮。
Shift
返回一个整数,在 button 参数指定的按钮被按下或者被释放 的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。某 键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2) 最少二进制位的一个位字段。这些位的值分别等于 1,2,和 4。 shift 参数指示这些键的状态。这些位中可能有一些,全部,或
者一个也没有被设置,指示这些键中的一些、全部,或者一个
也没有被按下。
例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。
x, y
返回一个指定鼠标指针当前位置的数。x 和 y 的值所表示的 总是通过该对象 ScaleHeight, ScaleWidth, ScaleLeft, 和
Shift
是在该事件发生时响应 SHIFT ,CTRL 和 ALT 键的状态的一个 整数。shift 参数是一个位域,它用最少的位响应 SHIFT 键 (位 0 )、CTRL 键(位 1 )和 ALT 键(位 2 )。这些位分 别对应于值 1、2 和 4。可通过对一些、所有或无位的设置来 指明有一些、所有或零个键被按下。
最新计算机应用基础教案第一讲:键盘与鼠标
计算机应用基础教案第一讲:键盘与鼠标教学过程:第1课时一、自我介绍及本学期的教学任务(省中级)二、计算机的起源(以数学家冯·诺依曼为实例)三、导入当今的社会是信息迅速不断更新的社会,不懂电脑、不会使用电脑就是新世纪的一种新的文盲,要想在短时间内学会、学好电脑的基本操作,必须从基本的键盘指法入手,键盘是计算机最常用的输入设备之一,主要用来输入文字或操作命令,它是我们和计算机交流的纽带,因而用好键盘是成为电脑高手的第一步。
现在我们先来看看键盘的整体布局。
四、新课讲授(一)键盘布局与功能常用的键盘是标准107键,通常我们把键盘划分为四个区域。
⒈打字键区:主键区一共有61个键,包括26个字母键。
10个数字键,还有一些符号键和控制键。
其中控制键包括如下几个键:⑴“Tab”键,又叫制表定位键。
每按一次“Tab”键,光标向右移动几(一般为8)个空格的宽度。
⑵“Caps Lock”键,又称大写字母锁定键,用来改变大小写输入状态,开机时系统处于小写字母a到z的输入状态,按一下大写字母锁定键,键盘右上方的Caps Lock指示灯亮,此时系统处于大写字母A到Z的输入状态,可以连续输入大写字母。
⑶“Shift”键,又叫上下档切换换档键,可以输入大写字母或者双字符键中的上侧(或上档)字符。
⑷控制键“Ctrl”和转换键“Alt”:这两个键一般用来配合其他键,完成特定功能。
⑸呼叫键:用来打开windows的开始菜单。
⑹空格键:即主键盘下方的长条键,用来输入空格。
注:空格也是一个字符。
⑺“Back space”键:又叫退格键,如果有打错的字符,可按退格键,删去光标前的一个字符;⑻“Enter”键:又叫回车键,一般用于确认指令,在文件编辑器按下此键,表示将光标移至下一行。
⒉功能键区:打字键区上面的一排键叫做功能键区,共16个键,其中包括“Esc(中断/消除键)”、“F1”到“F12”、“Wake Up、Sleep、Power”三个功能键。
第十讲(1) 键盘与鼠标事件过程
第10章 键盘与鼠标事件过程
主要内容
使用键盘事件过程,可以处理当按下或释放键盘上 某个键时所执行的操作;而鼠标事件过程可用来处 理与鼠标光标的移动和位置有关的操作。本章介绍 与键盘和鼠标有关的事件过程。
键盘事件
在Visual Basic中,提供KeyPress、KeyDown、 KeyUp三种键盘事件,窗体和接受键盘输入的控件都 识别这三种事件。 KeyPress 按了键盘的某键时触发 。 KeyDown 按下键盘的某键触发。 KeyUp 释放键盘的某键触发。
Shift:记录Shift、Ctrl、Alt三个转换键的状态
按Shift键(001B) 按Ctrl键 (010B) 按Alt键
Shift=1 Shift=2 Shift=4
b2 b1 b0
(100B)
如果同时按下两个或三个转换键,则Shift参数的值即为上述
两者或三者之和。请自己试一试。(参照教材P261页) 同时按下Ctrl和Shift键,Shift参数值为3
Sub Form_KeyDown(keycode As Integer, shift As Integer) Sub Form_KeyUp(keycode As Integer, shift As Integer)
可用于窗体和文本框、图片框等有关控件。
Sub object_KeyDown(keycode As Integer,shift As Integer)
键盘事件常用于检查输 入数据是否合法。如在 某文本框中输入“a”, 则在文本框接受字符前, 键盘事件的程序可以先 期截获该字符。
10. 1 KeyPress事件
在程序运行过程中,当按下键盘某个键时,会触 发当前拥有输入焦点的那个控件的KeyPress事件。 当KeyPress事件发生时,可获得当前所按键的字 符ASCII码值,如:按下回车键时,可获得该键的字 符ASCII码值13。 KeyPress事件可用于文本框、图片框、命令按钮、 复选框、列表框、组合框、滚动条、窗体等有关控件。
广东省高等教育自学考试Visual-Basic程序设计课程(课程代码07759)考试大纲
附件4:广东省高等教育自学考试Visual Basic程序设计课程(课程代码:07759)考试大纲目录一、课程性质与设置目的二、课程内容与考核目标第一章Visual Basic编程环境第一节可视化与事件驱动型语言第二节Visual Basic 的启动与退出第三节主窗口第四节其他窗口第二章对象第一节对象及其属性设置第二节窗体第三节控件第四节控件的画法和基本操作第三章建立简单的Visual Basic应用程序第一节语句第二节编写简单的Visual Basic应用程序第三节程序的保存、装入和运行第四节Visual Basic应用程序的结构与工作方式第四章数据类型、运算符与表达式第一节基本数据类型第二节常量和变量第三节变量的作用域第四节常用内部函数第五节运算符与表达式第五章数据输入输出第一节数据输出—Print方法第二节数据输入—InputBox函数第三节MsgBox函数和MsgBox语句第四节字形第六章常用标准控件第一节文本控件第二节图形控件第三节按钮控件第四节选择控件——复选框和单选按钮第五节选择控件—列表框和组合框第六节滚动条第七节计时器第八节框架第九节焦点与Tab顺序第七章Visual Basic 控制结构第一节选择控制结构第二节多分支控制结构第三节For循环控制结构第四节当循环控制结构第五节Do循环控制结构第六节多重循环第七节GoTo型控制第八章数组与记录第一节数组的概念第二节动态数组第三节数组的基本操作第四节数组的初始化第五节控件数组第六节记录第七节记录数组第九章过程第一节Sub过程第二节Function过程第三节参数传送第四节可选参数与可变参数第五节对象参数第六节局部内存分配第七节递归第十章键盘与鼠标事件第一节KeyPress事件第二节KeyDown和KeyUp事件第三节鼠标事件第四节鼠标光标的形状第五节拖放第十一章菜单程序设计第一节Visual Basic中的菜单第二节菜单编辑器第三节用菜单编辑器建立菜单第四节菜单项的控制第五节菜单项的增减第六节弹出式菜单第十二章对话框程序设计第一节概述第二节文件对话框第三节其他对话框第十三章多窗体程序设计与环境应用第一节建立多窗体应用程序第二节多窗体程序的执行与保存第三节Visual Basic工程结构第四节闲置循环与DoEvents语句第五节系统对象第十四章文件第一节文件概述第二节文件的打开与关闭第三节文件操作语句和函数第四节顺序文件第五节随机文件第六节用控件显示和修改随机文件第七节二进制文件第八节文件系统控件第九节文件基本操作三、关于大纲的说明与考核实施要求【附录】题型举例一、课程性质与设置目的(一)课程性质与设置目的本课程是广东省高等教育自学考试数字媒体艺术专业(独立本科段)的必考课程之一,本课程是数字媒体艺术专业的应用型基础课。
鼠标与键盘事件
七、键盘事件综合示例
检验输入
接上页
Private Sub Text_month_KeyPress(KeyAscii As Integer) If KeyAscii < 48 And KeyAscii <> 8 Or KeyAscii > 57 Then Beep : MsgBox "请输入数字“ KeyAscii = 0 End If End Sub Private Sub Text_passwd_KeyPress(KeyAscii As Integer) If KeyAscii < 48 And KeyAscii <> 8 Or KeyAscii > 57 Then Beep : MsgBox "请输入数字“ : KeyAscii = 0 End If End Sub Private Sub Text_year_KeyPress(KeyAscii As Integer) If KeyAscii < 48 And KeyAscii <> 8 Or KeyAscii > 57 Then Beep : MsgBox "请输入数字“ : KeyAscii = 0 End If ‘8代表退格符 End Sub Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then MsgBox “按下了回车符" If (Shift And 2) > 1 Then MsgBox “你按下了ctrl键" End Sub
五、keypress事件说明: keypress事件说明: 事件说明
Keypress事件:用于截获在文本框/ 组合框中输入的按键; Sub 控件名_keypress ([index as integer,] keyascii as integer ) 参数:([index as integer ,] keyascii as integer) a. index: 当控件是控件数组中的一个元素时,index代表在数组 是索引值,即下标 b. keyascii: 返回标准的ascii键码 可以用chr(keyascii) 将ascii 转化为相应的字符;或用 =asc(char) 将字符转为ascii码。(用于判定输入是否为某字符) 注意:keypress 事件不是指出所按字符在键盘上的物理位置,而 是传送一个字 符,故它可以判别大小写。 相反,keyup/ keydown能识别的是所按字符在键盘上的物理位置, 则大小写字符的keycode码是一样的。 (若要在keyup/ keydown 中判别字符的大小写,需判定是否为 shift +该键)
《新编Visual Basic程序设计教程》课件 第10章
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyDown和KeyUp事件都是有两个参数,即KeyCode和Shift,下面对两个参 数的具体含义进行解释。
上面我们说过,只有在窗体上没有活动或可见控件时,窗体才能接收键盘 事件。如果我们希望优先激活窗体的键盘事件,则可以把窗体的KeyPreview属 性设置为True。这个属性不只对KeyPress事件有用,对KeyDown和KeyUp事件同 样有用。
例 编写一个程序,检查用户的输入,如果用户输入的字母或数字,则提 示输入正确,反之提示错误。
新建一个工程,在窗体上画一个文本框控件(Text1),然后编写如下事件:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Dim str1 As String If KeyCode = vbKeyF1 Then
Select Case Shift Case 7 str1 = "Shift+Ctrl+Alt+" Case 6 str1 = "Ctrl+Alt+" Case 5 str1 = "Shift+Alt+" Case 4 str1 = "Alt+" Case 3 str1 = "Shift+Ctrl+”
KeyPress事件,就是当按下键盘上的一个可打印字符键(字母、数字和 符号)时所激发的事件。我们知道,在某个时刻,输入焦点只能位于某一 个控件上(如果窗体上没有活动的或可见的控件,则输入焦点位于窗体控 件上),当一个控件拥有输入焦点时,该控件才能接受从键盘上输入的信 息,所以当按下某个键时,所激发的是拥有输入焦点的那个控件的KeyPress 事件。支持KeyPress事件的控件有窗体、命令按钮、文本框、复选框、单选 框、列表框、组合框、滚动条与图片框等。
计算机基础课程 鼠标与键盘
在鼠标消息处理函数内,可用按位逻辑“与”运算检测 特定键的信息,例如,鼠标事件发生时,如果按下了 shift 键,则弹出一个消息框,显示“鼠标事件发生时, shift 键被按下!”,代码如下: if ( nFlags & MK_SHIFT ) //结果若为非零值,则表示 键被按下 Messagesox (”鼠标事件发生时,shift 键被按 下!”);
void CMyWinMouseView::OnLButtonUp(UINT nFlags,CPoint point) { //TODO:Add your message handler code here and/or call default
if(m_MouseDown)
{ CClientDC DC(this); DC.SelectObject(ptr_mypen); DC.SetROP2(R2_XORPEN); DC.MoveTo(m_LineOrg); DC.LineTo(m_LineEnd); m_LineEnd=point; DC.MoveTo(m_LineOrg); DC.LineTo(m_LineEnd); m_MouseDown=0; //鼠标已释放置初值0 }
pDC->SelectObject(ptr_mypen);
pDC->MoveTo(m_LineOrg); pDC->LineTo(m_LineEnd); m_MouseDown=0;
}
方法二 (3)画笔的初始化与销毁分别在视图类构造函数与析 构函数中完成,代码如下: CMyWinMouseView::CMyWinMouseView() { //TODO:add construction code here ptr_mypen=new CPen(0,0,RGB(255,255,255)); //白色线条 } CMyWinMouseView::~CMyWinMouseView() { delete ptr_mypen; //删除画笔 }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
default: label1.Text = e.KeyChar +" : " (int)e.KeyChar + "\n" + label1.Text; break; } }
+
章节目录
上一页
下一页
10.1.2 KeyDown和KeyUp事件 有些键如:PageUp、PageDown,KeyPress无法识别, 需要用KeyDown和KeyUp事件;判断、处理组合 键需要用KeyDown和KeyUp事件。 1. 判断、处理用户按键 当用户按下键盘上的任意键时,会引发当前拥有 焦点对象的 KeyDown 事件。用户放开键盘上任 意键时,会引发KeyUp事件。KeyDown和KeyUp 事件 e.KeyValue 返回用户按键对应的 ASCII 码。 e.KeyCode返回用户按键,为Keys类型。
章节目录
上一页
下一页
10.2.2 MouseDown和MouseUp事件
当鼠标指针在某个控件上,用户按下鼠标键时,将发生 MouseDown事件。当指针保持在控件上,用户释放鼠标 键时,发生MouseUp事件。当鼠标指针在控件上移动时 将发生MouseMove事件。 例如,下列语句判断用户是否右键双击了窗体,若是则 退出程序。请注意代码中的粗体字部分。 private void Form1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right && e.Clicks == 2) this.Close(); } 章节目录 上一页 下一页
章节目录 上一页 下一页
2. 判断、处理组合键 在KeyDown和KeyUp事件中,如果希望判断用户 曾使用了怎样的〈Ctrl〉、〈Shift〉、〈Alt〉 组合键,可通过对象 e 的 Control 、 Shift 和 Alt 属 性判断。 例如,下列代码使用户在 TextBox1 中按下〈Ctrl〉 +〈Shift〉+〈Alt〉+〈End〉键时结束运行。 if (e.Alt && e.Control && e.Shift && e.KeyValue == 35) // 〈End〉键的KeyValue值为35 this.Close();
【例10-3】设计一个MouseDown事件的示例程序。 程序启动后,当用户在窗体上单击或双击右键或 左键时,屏幕上显示用户的操作,程序运行结果 如图10-6所示。
章节目录
上一页
下一页
窗体Form1的MouseDown事件代码为: private void Form1_MouseDown(object sender, MouseEventArgs e) { string str1="",str2=""; switch (e.Button) // 判断用户按下了哪个鼠标 键 { case MouseButtons.Right: str1 = "右"; break; case MouseButtons.Left: str1 = "左"; break; }
章节目录 上一页 下一页
10.2.3 MouseMove事件 当用户在移动鼠标指针到控件上时触发 MouseMove 事 件 , 与 该 事 件 相 关 的 事 件 还 有 MouesEnter和MouseLeave事件分别在鼠标指针进 入控件和离开控件时发生。 【例10-4】设计一个程序。要求将鼠标指针指向 和离开按钮Button1时,按钮上显示的图片不同。 当鼠标在窗体上移动时,标签中实时显示当前指 针的坐标值(X,Y)。
下一页
上一页
10.1 键盘事件 C#主要为用户提供了三种键盘事件: 按下某ASCII字符键时发生KeyPress事件; 按下任意键时发生KeyDown事件; 释放键盘上任意键时发生KeyUp事件。 只有获得焦点的对象才能接受键盘事件。 窗体获得焦点并识别键盘需设置窗体的KeyPreview属 性为True。 注意: 按下<Tab>键时,将发生窗体上控件对象焦点转移, 而不会触发键盘事件。除非窗体上每个控件都无效, 或其TabStop置为False。 设置了窗体的AcceptButton和CancelButton的属性时。 按下<Enter>或<Esc>键时将触发按钮的Click事件,不 会触发键盘事件。
10.1.1 KeyPress事件 当用户按下又放开某个 ASCII 字符键时,会引发当前 拥有焦点对象的KeyPress事件。 1. 判断、处理用户按键 通过KeyPressEventArgs类的返回参数可以判断用户按 下的是哪个键。例如在窗体、文本框等控件的 KeyPress事件过程中书写类似如下代码,可实现用户 按键的判断。 private void Form1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) label1.Text = "你按下了〈Enter〉键"; }
章节目录 上一页 下一页
// 判断用户连续按下并释放了几次鼠标键 switch (e.Clicks) { case 1: str2 = "单"; break; case 2: str2 = "双"; break; } label1.Text = "您" + str2 + "击了鼠标" + str1 + "键! "; label1.Left = (this.Width - label1.Width) / 2; }
2. KeyPress事 件应用实例
【例10-1】设计 一个ASCII码查询 程序。程序启动 后显示使用方法 提示,用户按下 某一键后屏幕显 示该键名及对应 的ASCII码。单击 窗体可以清屏。
章节目录
上一页
下一页
窗体Form1的KeyPress事件时代码为: private void Form1_KeyPress(object sender, KeyPressEventArgs e) {// e.KeyChar返回用户在键盘上按下的字符 switch (e.KeyChar) { case (char)Keys.Back: label1.Text = "退格键:" + (int)Keys.Back + "\n" + label1.Text; break;
Visual C# 2005程序设计
第1章 Visual C#概述 第2章 C#语法基础 第3章 顺序结构程序设 计 第4章 选择结构程序设 计 第5章 循环结构程序设 计 第6章 面向对象编程技术 第7章 继承 第8章 数组与自定义类型 第9章 菜单、工具栏与状 态栏 第10章 鼠标键盘事件 第11章 ActiveX控件 第12章 数据库技术 第13章 开发Web应用程 序 第14章 异常处理与部署 应用程序
章节目录
上一页
下一页
MouseMove、MouseEnter和MouseLeave事件应用示例 章节目录 上一页 下一页
章节目录
上一页
下一页
case (char)Keys.Tab: label1.Text = "Tab键:" + (int)Keys.Tab + "\n" + label1.Text; break; case (char)Keys.Enter: ) label1.Text = " 回 车 键 (Enter) : " + (int)Keys.Enter + "\n" + label1.Text; break; case (char)Keys.Space: label1.Text = "空格键:" + (int)Keys.Space + "\n" + label1.Text; break; case (char)Keys.Escape: label1.Text = "Esc键:" + (int)Keys.Escape + "\n" + label1.Text; break;
章节目录
上一页
下一页
10.2 鼠标事件
10.2.1 鼠标事件发生的顺序 当用户操作鼠标时,将触发一些鼠标事件。这些事件的发生顺 序如下: ① MouseEnter:当鼠标指针进入控件时触发的事件。 ② MouseMove:当鼠标指针在控件上移动时触发的事件。 ③ MouseHover/MouseDown/MouseWheel :其中 MouseHover 事 件当鼠标指针悬停在控件上时被触发;MouseDown事件在用户 按下鼠标键时被触发;MouseWheel事件在拨动鼠标滚轮并且控 件有焦点时被触发。 ④ MouseUp : 当 用 户 在 控 件 上 按 下 的 鼠 标 键 释 放 时 触 发 MouseUp事件。 ⑤ MouseLeave :当鼠标指针离开控件时触发 MouseLeave 事件。