版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章键盘与鼠标
键盘事件10.1与鼠标相关的事件和属性10.2拖放10.310.1键盘事件10.1.1KeyPress事件10.1.2KeyDown和KeyUp事件键盘是一种输入数据或者信息的重要工具,有些控件(如窗体和文本框)本身已经具备了处理输入按键的功能,所以在简单编程的情况下可以不必编写键盘事件过程。但是,如果要识别组合键、功能键、光标移动键、小键盘(数字键盘)上的按键、区别按下和松开的动作、对输入字符进行筛选,就要使用键盘事件了,本章介绍的键盘事件有KeyPress事件、KeyDown事件和KeyUp事件。10.1.1KeyPress事件KeyPress事件,就是当按下键盘上的一个可打印字符键(字母、数字和符号)时所激发的事件。我们知道,在某个时刻,输入焦点只能位于某一个控件上(如果窗体上没有活动的或可见的控件,则输入焦点位于窗体控件上),当一个控件拥有输入焦点时,该控件才能接受从键盘上输入的信息,所以当按下某个键时,所激发的是拥有输入焦点的那个控件的KeyPress事件。支持KeyPress事件的控件有窗体、命令按钮、文本框、复选框、单选框、列表框、组合框、滚动条与图片框等。该事件过程的语法是:PrivateSubobject_KeyPress(KeyAsciiAsInteger)EndSub其中object是指支持KeyPress事件的控件名,比如文本框控件的KeyPress事件的语法就是:PrivateSubText1_KeyPress(KeyAsciiAsInteger)EndSub整形参数KeyAscii传递的是按键字符的ASCII码。例如,当按下【F】键时,KeyAscii的值为70;按下【!】键时,KeyAscii的值为33等。我们可以使用Chr(KeyAscii)函数将KeyAscii参数转变为一个字符,例如Chr(70)=【F】。KeyPress事件只能够处理可打印的键盘字符和为数很少的几个功能键,如Enter(回车键)和BackSpace(退格键),对于其他功能键、编辑键和定位键,则不作响应。如果要处理不被KeyPress识别的击键,则应该使用KeyDown和KeyUp事件。KeyPress事件在截取对TextBox或ComboBox控件输入的击键时非常有用,它可以立即测试击键的有效性并在字符输入时对其进行处理。我们如果在KeyPress事件过程中改变了KeyAscii参数的值,就会改变实际输入的字符,将KeyAscii的值改变为0时可取消击键,这样对象便接收不到字符了。因为不同的字符的ASCII码是不同的,所以利用KeyPress事件可以判断和控制用户的输入,例如可以控制用户在文本框中只能输入数字或字母,还可以判断用户输入的字母是大写还是小写。我们把一个文本框控件(Text1)拖到窗体上,然后进入程序代码窗口,在“过程”框中选择KeyPress,编写如下代码:PrivateSubText1_KeyPress(KeyAsciiAsInteger)Text1.Text=""IfKeyAscii<48OrKeyAscii>57ThenBeepKeyAscii=0ElseKeyAscii=KeyAscii+1EndIfEndSub上述过程首先控制用户的输入,它只允许用户输入0~9的数字(0的ASCII码是48,9的ASCII码是57),如果输入其他字符,则响铃(Beep),并消除该字符;然后,再把用户输入的数字加1。运行上面的程序,在文本框中输入一个1,则会显示2;输入9的时候,则会显示一个英文冒号,因为英文冒号的ASCII码是58。上面我们说过,只有在窗体上没有活动或可见控件时,窗体才能接收键盘事件。如果我们希望优先激活窗体的键盘事件,则可以把窗体的KeyPreview属性设置为True。这个属性不只对KeyPress事件有用,对KeyDown和KeyUp事件同样有用。例10-1(参看教材P164-166)10.1.2KeyDown和KeyUp事件KeyDown事件是当按下按键时触发,而KeyUp事件是当释放按键时触发,这两个事件提供了最低级的键盘响应,可以报告键盘的物理状态,它们返回的是“键”。这和KeyPress事件不同,KeyPress事件并不反映键盘的直接状态,它返回的是“字符”的ASCII码。我们进一步举例阐明这一差别。按下字母键“A”时,KeyDown所得到的KeyCode码(KeyDown事件的参数)与按字母键“a”时相同,而对KeyPress来说,所的到的ASCII码是不相同的。这两个事件过程的语法为:PrivateSubobject_KeyDown(KeyCodeAsInteger,ShiftAsInteger)PrivateSubobject_KeyUp(KeyCodeAsInteger,ShiftAsInteger)其中的object是对象名,例如窗体的KeyDow事件的语法为:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)KeyDown和KeyUp事件都是有两个参数,即KeyCode和Shift,下面对两个参数的具体含义进行解释。1.KeyCode参数KeyCode是一个整形参数,表示按键的代码。每一个键都有相应的键代码,该码是以“键”为准,而不是以“字符”为准,字母键的键代码与此字母的大写字符ASCII值相同。如上面介绍,大写字母与小写字母使用同一个键,它们的KeyCode相同,具体是大写字母还是小写字母要通过与Shift参数的组合来判断。而大键盘上数字键和数字键盘上的相同的数字键的KeyCode是不一样的,因为它们不是同一个“键”。VisualBasic为每个键代码声明了一个内部常量。例如F1键的键代码为112,相应的内部常量为vbKeyF1;Home键的键代码为36,内部常量为vbKeyHome。如表10-1所示,列出了一些常用按键的KeyCode值和内部常量的对应关系。表10-1一些常用键的KeyCode值和内部常数功能键KeyCode值常数功能键KeyCode值常数F1112vbKeyF1Enter13vbKeyReturnF2113VbKeyF2Esc27vbKeyEscapeF3114VbKeyF3PageUp33VbKeyPageUpF4115VbKeyF4PageDown34VbKeyPageDownF5116VbKeyF5Home35VbKeyHomeF6117VbKeyF6End36VbKeyEndF7118VbKeyF7Insert45VbKeyInsertF8119VbKeyF8Delete46VbKeyDeleteF9120VbKeyF9←37VbKeyLeftF10121vbKeyF10↑38VbKeyUpBackspace8vbKeyBack→39VbKeyRightTab9vbKeyTab↓40vbKeyDown2.Shift参数Shift也是一个整形参数,指示在按下一个键时,是否同时按下了Shift、Ctrl和Alt键。它以二进制形式表示,当按下Shift键时,Shift参数的值为001(十进制数1);当按下Ctrl键时,Shift参数的值为010(十进制数2);当按下Alt键时,Shift参数的值为100(十进制数4)。如果三个键均未被按下,Shift参数的值为0,如果这三个键不只一个键被按下,则Shift参数的值是被按下键相应数值之和。例如,如果Shift参数的值为6,表明按下了Ctrl和Alt两个键。因此,Shift参数的值共有8种可能,见表10-2。表10-2Shift参数的值十进制数二进制数作用0000没有按下转换键1001按下Shift键2010按下Ctrl键3011按下Ctrl+Shift键4100按下Alt键5101按下Alt+Shift键6110按下Alt+Ctrl键7111按下Alt+Ctrl+Shift键上面我们已经说过,KeyDown是当一个键被按下时所产生的事件,而KeyUp是当松开被按下的键时所产生的事件,我们可以通过一个具体的程序来说明。新建一个工程,窗体上不放任何控件,也可以把窗体的KeyPreview属性设为True,然后编写如下事件:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)Form1.ForeColor=&O0Print"您现在按下了键盘上的某个键"EndSubPrivateSubForm_KeyUp(KeyCodeAsInteger,ShiftAsInteger)Form1.ForeColor=&HFFPrint"您现在松开了您按下的键"EndSub程序运行后,如果压下某个键,则在窗体上连续显示“您现在按下了键盘上的某个键”,颜色为黑色,直到松开了该键,窗体上显示“您现在松开了您按下的键”,颜色为红色。例10-2(参看教材P168-169)10.2与鼠标相关的事件和属性10.2.1MouseDown、MouseUp和MouseMove事件10.2.2使用鼠标事件10.2.3MousePointer和MouseIcon属性我们前面已经多次使用过窗体和其他控件的Click事件和DblClick事件,这两个是很简单的鼠标事件,它们没有参数,当程序在处理这两个事件时,不能确定用户是在对象的什么位置上单击鼠标,也不能确定用户单击的是鼠标的哪一个键,更不能确定在单击鼠标时是否按下了键盘上的某个控制键(如Shift、Ctrl和Alt键)。如果要在程序中得知上面所述各种状态,就要处理下面的MouseDown、MouseUp和MouseMove事件。大家使用Windows及其应用程序时,可能会注意到,当鼠标光标位于不同的窗口内时,其形状是不一样的,有时候是箭头状,有时候是十字,有时候是竖线等。在VisualBasic中,我们可以通过设置相关的属性来改变鼠标的形状。10.2.1MouseDown、MouseUp和MouseMove事件具MouseDown、MouseUp和MouseMove事件的对象有窗体、命令按钮、文本框、复选框、单选框、框架、图像、标签、列表框和图片框等。当用户在对象上按下鼠标键时触发MouseDown事件,事件过程的语法为:PrivateSubobject_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)当用户在对象上释放鼠标键时触发MouseUp事件,事件过程的语法为:PrivateSubobject_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)当用户在对象上移动鼠标时触发MouseMove事件,事件过程的语法为:PrivateSubobject_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)语法中的object是只对象名,如“Form”、“Command”等。这三个事件过程与前面学过的其他事件过程最大的不同在于,它们都具有四个参数。通过这四个参数可以在程序中确定事件发生时详细的信息。这四个参数的取值与意义如下。1.Button参数Button参数值是一个整形值,参数的值反映事件发生时哪个鼠标键被按下或释放。用0,1,2位表示鼠标的左、右、中键,每位用1,0表示被按下或释放,如图10-4所示。三个位的二进制转换成十进制就是Button的值,1表示左键,2表示右键,4表示中键。
图10-4Button参数与位的关系对于MouseMove事件,事件发生时,可能同时有两个或三个鼠标键被按下,这时Button参数是相应的两个或三个值的和。例如,如果MouseMove事件发生时,Button参数的值是3,则表示鼠标左键和右键都被按下(1+2=3)。因为移动鼠标时,可以不按下任何一个鼠标键,所以对于MouseMove事件,这个参数的值可以为0。2.Shift参数此参数也是一个整数,它表明在这三个鼠标事件发生时,键盘上的哪一个控制键被按下。Shift参数的值为1,表示Shift键被按下;Shift参数的值为2,表示Ctrl键被按下;Shift参数的值为4,表示Alt键被按下。如果同时有两个或三个控制键被按下,则Shift参数的值是相应键的数值之和。例如,当事件发生时,如果Shift键和Alt键同时处于按下状态,则Shift参数值为5;如果事件发生时,没有键盘控制键被按下,则这个参数的值为0。3.X参数、Y参数这两个参数指明当事件发生时,鼠标指针热点所处位置的坐标,它们确定了鼠标位置。这里的X、Y不需要给出具体的数值,它随着鼠标光标在窗体上的移动而变化。默认情况下,这个坐标的原点在引发事件对象的左上角。应该注意的是,当移动鼠标时,会不断地发生MouseMove事件。但是,并不是每经过一点都会发生MouseMove事件,而是在移动过程中每间隔很短的一段时间发生一个此事件。所以,在相同的距离上,鼠标移动的速度越快,产生的MouseMove事件就越少。在对象上操作一次鼠标,会产生多个与鼠标有关的事件,如:Click事件、DblClick事件、MouseDown事件、MouseUp事件或MouseMove事件。对于不同类型的对象,这些事件的产生顺序可能不同,还有些对象不支持其中的某个事件。所以,在使用前一定要仔细测试。比如,在窗体上单击,会依次引发MouseDown事件、MouseUp事件和Click事件。在窗体上双击,会依次引发如下事件:MouseDown、Click、DblClick、MouseUp。在命令按钮单击,会依次引发MouseDown、Click、MouseUp事件。当一个控件不可见或无效时,针对它的鼠标操作会传递到位于它下面的对象上。10.2.2使用鼠标事件使用MouseMove事件,可以把命令按钮移动到窗体的不同位置,这样可以设计一个程序,在用户点击窗体上的命令按钮时,命令按钮就移动,使用户点不住这个按钮。下面我们设计一个这样有趣的程序。例10-3(参看教材P172-173)例10-4(参看教材P173-174)例10-5(参看教材P175-176)例10-6(参看教材P176-177)10.2.3MousePointer和MouseIcon属性前面我们已经说过,在Windows环境中,在不同的窗口,不同的地方,鼠标指针的形状可能是不一样的,可以用不同的鼠标指针来反映信息。在VisualBasic中,我们可以通过设置MousePointer和MouseIcon属性来改变鼠标指针的形状。MousePointer属性指定在运行时当鼠标移动到对象上时鼠标指针的形状,窗体和多数控件对象都具有这两个属性,该属性既可以在属性窗口中设置,也可以在程序代码中设置。MousePointer属性是一个整数,可以取0—15,其含义见表10-4。表10-4MousePointer属性的取值常量值鼠标指针的形状vbDefault0(默认值)形状由对象决定vbArrow1箭头vbCrosshair2十字线(Crosshair指针)vbIbeam3I型vbIconPointer4箭头图标(嵌套方框)vbSizePointer5尺寸线(指向上、下、左和右4个方向的箭头)vbSizeNESW6右上-左下尺寸线(指向右上和左下方向的双箭头)vbSizeNS7垂直尺寸线(指向上下两个方向的双箭头)vbSizeNWSE8左上-右下尺寸线(指向左上和右下方向的双箭头)vbSizeWE9水平尺寸线(指向左右两个方向的双箭头)vbUpArrow10向上的箭头vbHourglass11沙漏(表示等待状态)vbNoDrop12没有入口:一个圆形记号,表示控件移动受限vbArrowHourglass13箭头和沙漏vbArrowQuestion14箭头和问号vbSizeAll15四向尺寸线(表示改变大小)vbCustom99通过MouseIcon属性所指定的自定义图标当某个对象的MousePointer属性被设置为上表中的某个值时,鼠标光标在该对象内就以相应的形状显示。例如,假定一个文本框的MousePointer属性被设置为3,则当鼠标光标进入该文本框时,鼠标光标为“Ⅰ”形,而在文本框之外,鼠标光标保持为默认形状。MouseIcon属性使用一个图标文件来自定义鼠标形状,图标文件一般以.ico和.cur为扩展名。只有当MousePointer属性被设置为99时,该属性才有效。在程序中应该使用LoadPicture函数装入磁盘文件来设置此属性,如下面一段代码:Form1.MousePointer=99Form1.MouseIcon=LoadPicture(App.Path+"\ccc.ico")在Windows中,鼠标指针的形状的应用有一些约定俗成的规则,为了和Windows环境相适应,在应用程序中应遵守这些规则,主要有以下几点:(1)表示用户当前可用的功能,如“I”形鼠标指针形状(属性值3)表示插入文本;十字形状(属性值2)表示画圆或线,或者表示选择可视对象进行复制或存取。(2)表示程序状态的用户可视线索,如沙漏(属性值11)表示程序忙,一段时间后将控制权交给用户。(3)当坐标(X,Y)值为0时,改变鼠标指针的形状。
上面我们说过,MousePointer属性既可以在属性窗口中设置,也可以在程序代码中设置。在程序代码中设置MousePointer属性的一般格式为:对象.MousePointer=设置值这里的“对象”可以是窗体、屏幕、框架、组合框、复选框、命令按钮、文本框、标签、图像、图片框、滚动条、列表框、目录列表框、驱动器列表框、文件列表框等,“设置值”是表10-4中的一个值。例10-7(参看教材P179)10.3拖放在Windows环境中,我们经常使用拖放操作。所谓拖放,就是在屏幕上用鼠标把一个对象从一个地方“拖拉”到另一个地方再放下。拖放的一般过程是,把鼠标光标移动到一个控件对象上,按下鼠标左键,不要松开,然后移动鼠标,对象将随鼠标的移动而在屏幕上拖动,在松开鼠标键后,对象即被放下。通常把原来位置的对象叫做源对象,而拖动后放下的位置的对象叫做目标对象。为了有助于理解这种拖放,可以把拖放过程分解成两个操作:拖动和放下,“拖动”是发生在源对象上的“拖”操作,“放下”是发生在目标对象上的“放”操作,即把源对象“放”在目标对象上。VisualBasic中,设计模式下,各控件都可以用鼠标随意拖放的方式来改变控件的大小和位置,VB的拖放功能使用户在程序运行时也具有这种功能。在拖动过程中,被拖动的对象变为灰色。1.与拖放有关的属性、事件和方法除了菜单、记时器和通用对话框外,其他控件均可在程序运行期间被拖放。表10-5列出了与拖放有关的属性、事件和方法,使用这些属性、事件和方法能够指定拖放操作的意义,而且能指定对于给定控件启动拖动操作的方法。表10-5与拖放有关的属性、事件和方法类别项目说明属性DragMode启动自动拖动控件或手动拖动控件DragIcon指定拖动控件时显示的图标事件DragDrop识别何时将控件拖动到对象上DragOver识别何时在对象上拖动控件方法Drag启动或停止手动拖动拖放分为自动拖放和手动拖放,DragMode属性用来设置自动或手动拖放模式。在默认情况下,该属性值为0,这时可以用手工方式来确定拖放操作何时开始或结束。为了能对一个控件执行自动拖放操作,必须把它的DragMode属性设置为1,这时控件不能正常响应鼠标事件,如Click事件和MouseDown事件。该属性可以在属性窗口中设置,也可以在程序代码中设置,例如:Text1.DragMode=1在拖动一个对象的过程中,并不是对象本身在移动,而是移动代表对象的图标。也就是说,一旦要拖动一个控件,这个控件就变成一个图标,等放下后再恢复成原来的控件,默认为将源对象的灰色轮廓作为拖动的图标。如果想用某个图标(扩展名为.ico)来代替该轮廓,则可以通过DragIcon属性进行设置。该属性可以在属性窗口进行设置,也可以在程序中用LoadPicture函数进行设置。例如:Command1.DragIcon=LoadPicture(App.Path+"\aa.ico")这里,用“aa.ico”作为命令按钮的DragIcon属性,当拖动该按钮时,按钮变成aa.ico所表示的图标。当把控件(图标)拖到目标之后,如果松开鼠标键,则产生一个DragDrop事件。该事件的过程语法为:PrivateSubobject_DragDrop(SourceAsControl,XAsSingle,YAsSingle)EndSub其中的“object”是指对象名,如Form、Command1等。该事件过程有3个参数,分别为:Source、X和Y。其中Source是一个对象变量,其类型为Control,该参数含有被拖动对象的属性。可以像使用控件一样使用它,可以引用其属性或调用其方法。例如:IfSource.Name="form1"Then……用来判断被拖动对象的Name属性是否为“form1”。参数X、Y是松开鼠标键放下对象时鼠标光标的位置。需要注意的是,如果没有进行编程设计,对象本身不会移动到新的位置或被加到目标对象中,用户一定要在目标对象的DragDrop事件中进行程序设计实现真正的拖动。在源对象被拖动到目标对象的过程中,如果经过其他对象,则在这些对象上会产生DragOver事件,当然在目标对象上也会产生DragOver事件,这个事件发生在DragDrop事件之前。DragOver事件过程语法为:PrivateSubobject_DragOver(SourceAsControl,XAsSingle,YAsSingle,StateAsInteger)EndSub该过程有4个参数,其中Source参数的含义和DragDrop事件的Source参数义相同,X、Y是拖动时鼠标光标的坐标位置。State参数是一个整数值,可以取以下3个值:0—鼠标光标正进入目标对象的区域;1—鼠标光标正退出目标对象的区域;2—鼠标光标正位于目标对象的区域之内。与拖放有关的方法不仅有Drag方法,还有Move方法,其中Move方法我们比较熟悉,下面主要介绍一下Drag方法。Drag方法的格式为:对象.Drag整数不管对象的DragMode属性如何设置,都可以用Drag方法来人工地启动或停止一个拖动过程。“整数”的取值为0、1或2,其含义分别为:
0—取消指定控件的拖放;
1—当Drag方法出现在控件的事件过程中时,允许拖放指定的控件;
2—结束控件的拖动,并发出一个DragDrop事件。例10-8(参看教材P181-183)2.自动拖放前面我们说过,默认情况下,对象的DragMode属性为0,这时可以用手工方式来确定拖放,如果要实现自动拖放,则需要把对象的DragMode属性设置为“1-Automatic”。图10-14说明了实现自动拖放在各个对象上所涉及的属性、方法和事件。图10-14自动拖放涉及的属性、方法和事件例10-9(参看教材P183-184)3.手动拖放前面我们介绍了自动拖放,下面我们介绍一下手动拖放。与自动拖放不同,手动拖放不必把DragMode属性设置为“1-Automatic”,仍保持默认的“0-Manual”。图10-16说明了实现手动拖放在各个对象上所涉及的属性、方法和事件。图10-16手动拖放所涉及的属性、方法和事件手动拖放比自动拖放提供了更多控制,可以由用户自行决定何时拖放,何时停止,允许指定可以拖动控件的时间以及不可拖动控件的时间(在自动拖放里,只要设置不变,就总能拖动控件)。比如在响应MouseUp和MouseDown事件或响应键盘命令或菜单命令时得以进行拖放。有了手动拖放,还可以在开始拖放前识别MouseDown事件,这样就可以记录鼠标的位置。为了在代码中启动拖放,应将DragMode属性保持默认的“0-Manual”。然后,无论何时开始拖放或停止拖放都要使用我们前面介绍的Drag方法(在一些特殊情况下,如果DragMode属性为1,也可采用Drag方法编程实现控件的拖放)。Drag方法的操作值为1时可以拖放指定的控件;值为0或2时停止拖放,如值为0,则表示取消控件的拖放操作,如值为2则表示停止拖放,并产生DragDrop事件。Drag方法与MouseDown、MouseUp事件过程结合使用,可以实现手动拖放。例10-10(参看教材P185-186)3.1.1JSP、Java与Javascript
1.声明JSP声明的作用是说明将要使用的变量和方法,以保存信息或定义JSP页面可能需要调用的方法,其作为范围是整个页面。因为JSP是基于Java技术的,因此要求像Java一样,对于将要在JSP程序中用到的变量和方法,必须先进行声明,不然将会出错。在声明元素中声明的变量和方法,将在JSP页面初始化时进行初始化。2.表达式
表达式用于将JSP内容转换为字符串以便于包含在页面的输出中。表达式表示的是一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后插入到这个表达式在JSP文件中的位置显示。因为表达式的值已经被转化为字符串,所以能够在一行文本中插入表达式。
表达式的使用格式如下:<%=expression%>
其中,expression部分是表达式的内容,它是一个有计算结果的JSP表达式(注意,表达式一定要有一个可以输出的值),如数学计算式子、有返回值的函数、变量等。3.脚本片段
脚本片段(Scriptlets)也称为代码片段,它是一个有效的Java程序段,是JSP中的代码部分。在这个部分中可以使用几乎任何Java的语法来编制程序,它是嵌放在<%和%>标记中的,语法格式如下:<%scriptlet%>4.注释
注释是程序设计中的常用工具,注释通常有两方面的作用:一个作用是作为提示,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体验经济时代木制名片盒作为企业社交货币的情感附加值与资本化路径
- 从单机销售到运维服务转型中磁性排屑器项目的商业模式创新与估值逻辑
- 2026年漯河职业技术学院高职单招笔试数学试题库含答案解析3套试卷
- 2026年湖南软件职业学院高职单招笔试职业适应性测验试题库含答案解析2套试卷
- 2026年湖南交通职业技术学院高职单招笔试职业适应性测验试题库含答案解析2套试卷
- 2026年湖北中医药高等专科学校高职单招笔试化学试题库含答案解析2套试卷
- 2026年海南经贸职业技术学院高职单招笔试语文试题库含答案解析2套试卷
- 2026年浙江育英职业技术学院高职单招笔试职业技能测验试题库含答案解析3套试卷
- 2026年浙江医药高等专科学校高职单招笔试英语试题库含答案解析3套试卷
- 2026年泰州职业技术学院高职单招笔试化学试题库含答案解析2套试卷
- 第一章 机械运动 评价卷(含答案)人教版物理(2024)八年级上册
- 中职教材形象设计课件
- 《品篆刻之美》课件 2025-2026学年人美版(2024)初中美术七年级上册
- 农业园区管理课件
- 早产儿肠内营养管理
- 中铁品牌建设管理办法
- DZ/T 0223-2011矿山地质环境保护与恢复治理方案编制规范
- 美术步辇图课件
- 中风恢复期护理
- 污水处理基础知识+工艺培训(全)课件
- 2023年上海浦东新区劳动人事争议仲裁院辅助人员招聘拟聘笔试参考题库(共500题)答案详解版
评论
0/150
提交评论