收藏 分销(赏)

VB基础语法.ppt

上传人:精**** 文档编号:8058370 上传时间:2025-02-02 格式:PPT 页数:44 大小:761KB 下载积分:12 金币
下载 相关 举报
VB基础语法.ppt_第1页
第1页 / 共44页
VB基础语法.ppt_第2页
第2页 / 共44页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,.,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第三章 VBS的基本语法,3.1 基本数据类型,数值型,integerlongsingledoublecurrencybyte,字符串类型,string,日期类型,date,同时表示日期和时间,dim firstday as date,firstday=#99/12/31#,firstday=“99/12/31”,firstday=“22:30:50”,1,.,逻辑类型,boolean,逻辑型变量的取值范围只能是true(-1)或false(0)。,Dim switch as boolean,switch=true,switch=-1,这两条赋值语句,功能是相同。,变体类型,variant,变体型变量是一种十分灵活的变量,可以保存各种类型 的数据。在定义变量中没有明确指明数据类型时,变量缺省时定义为变体类型。,dim x,dim y as variant,上述两个语句都是定义一个变体变量。,2,.,对象类型,定义对象变量时,可以直接指明对象的类型。,dim obj1 as commandbutton,dim obj2 as textbox,定义了对象变量后,使用set语句为对象变量赋值。,Set obje=command1,obj1.caption=“打开”修改命令按钮的标题,obj1.fontbold=true,用户自定义类型,它类似于C语言中的“结构体”类型的数据。,Type 类型名,元素名 as 类型,元素名 as 类型,元素名 as 类型,end type,3,.,例:定义一个employee(职工)类型,其中包括职工号、姓名、年龄。,Type employee,empno as integer,name as string*10,age as integer,end type,dim emp as emloyee,在后面的程序中我们可以用“变量.元素”这样的形式来引用各个成员。,emp.name=“张三”,emp.no=83001,emp.age=21,3.2,变量的声明,在VB中使用一个变量时,可不加任何声明而直接使用,叫做隐式声明。使用这种方法虽简单,但却不利于程序调试,所以一般对于变量最好先声明,后使用。设置方式:,在“工具”菜单中选“选项”,在对话框中选“编辑器”,在“要求变旦声明”中选中。,dim 变量名 as 数据类型,dim name as string,dim sum(3)as integer,4,.,使用static声明变量,static 变量名 as 数据类型,static a as integer,使用static声明变量为静态变量。它与dim声明的变量不同之处在于在执行一个过程结束时,过程中所用到的static变量的值会保留,下次再调用此过程时,变量的初值是上次调用结束时被子保存留的值,而dim 声明的变量在过程结束时不保留,每次调用时需要重新初始化。,3.3 运算符和表达式,算术运算符,+-*/(整除)mod,关系运算符,=,逻辑运算符,notandorxor(逻辑异或)eqv(逻辑等于),5,.,3.3 字符串连接运算符,+&,c=“abcd”+“ef”,c=“abcd”&“ef”这两式子的运算结果是相同。,但是,由于“+”号同时也是加法运算符,VB又支持变体型的变量,所以将加号用做字符串连接运算符有时会引起混淆。因此,在进行字符串连接时应该 选用“&”操作符而不是“+”操作符。,3.4 基本语句,赋值语句,变量名=表达式,条件语句,1)if then,语句,2)if then,语句组,endif,6,.,3)if then,语句组1,else,语句组2,endif (例:ch03 ex3.vbp),4)if then,语句组1,else if then,语句组2,else,语句组3,endif,(例:ch03ex4.vbp),语句组1,条件,语句组2,T,F,条件1,语句组1,条件2,语句组2,语句组3,T,F,T,F,7,.,多分支语句,select case 变量或表达式,case 值1,语句组1,case 值2,语句组2,case 值3,语句组3,case else,语句组n,end select (例:ch03ex5.vbp),变量或表达式:可以是整型或字符串表达式,值:是一组用逗号分隔枚举值。,8,.,(例:编写一个分数等级转换表,分数等级,=90 优,=80 良,=70 中,=60 及格,=60 不及格,x=Val(Text1.Text),Select Case x 10,Case 10,9,Text2.Text=优,Case 8,Text2.Text=良,Case 7,Text2.Text=中,Case 6,Text2.Text=及格,Case 0,1,2,3,4,5,Text2.Text=不及格,End Select,转向语句,goto,标号,on,表达式,goto,标号1,标号2,,9,.,循环语句,1)do while 条件,语句体,exit do,语句体,loop,2)do,语句体,exit do,语句体,loop while 条件 条件真时退出循环,3)do until 条件 条件假时执行循环体,语句体,exit do,语句体,loop,4)for 循环变量=初值 to 终值 step步长,语句体,exit for,语句体,next 循环变量,10,.,例:(实验书第三章练习三)编写求一元二次方程根。(ch03练习3.vbp),注:format(numer,fmt),功能:将数值型量转为字符型量。,Numer:为一个数值型 量。,Fmt:为用户定义格式。,#:显示数字,不在前或后补0。,0:显示数字,在前或后补0,.:小数点。,,:千位符。,%:百分比。,例:x=2.33333,format(x,“#.#”),结果为:2.33 字符串,例:求 1+2+3+100的和 (ch03ex6.vbp),例:设计一个窗体打印九九乘法表(ch03ex7.vbp),例:编写求,1*1+2*2+3*3+100*100的和。,Vb常用函数:(见P67),11,.,3.5 以对象为核心的程序设计,在VB的程序设计中,对象起着最重要的角色,窗体是一个对象,每一个放置在窗体上控件也都是对象。由于VB是面向对象的程序设计语言,它的代码结构与对象有着很大关系,在VB中每一,个窗体和控件都有一些预先定义好了的事件。,例:命令按钮对象,当用户单击命令按钮时,命令按钮对象会产生click事件。,Click事件,Private sub command1_click(),被驱动执行的程序,end sub,(单击鼠标左键),对程序而言,可以不处理这个事件,此时这个事件对程序便没有什么作用。但是如果程序要处理这个事件,该如何进行?,12,.,因此,如果觉得某个对象的某种事件有进行处理的必要,则以“该,对象的名称”与“该事件的名称”定义这个事件程序,如下示:,private sub 对象名_事件名(),在此编写希望被驱动执行的程序,end sub,将来该对象的这个事件发生时,其对应的事件程序会被驱动。以后学习每一种对象时,需了解该对象会产生哪些事件和事件发生时机,这样才能让用户与所编写的程序充分产生交互关系。,了解对象的特性,其实很多对象只要看它的名字,就可以了解它的基本特性。,例如:,textbox,同时亦可以通过了解对象的属性。,懂得控制对象,控制对象的方法不外乎以下两种:,1,)设置对象属性,2,)调用对象方法,13,.,其实方法是对象内部的子程序,这种子程序的作用是要求对象执行某件工作。,例如:很多控件都具有move方法,调用这个方法可让控件移动它的位置。,查阅“方法”,要了解某一种对象提供了哪些方法,可以打开该 对象的MSDN帮助文件,再选取“方法”选。,3.6 常用事件在程序设计中应用,事件驱动模式是VB程序的主流,我们必须了解每一种对象会产哪些事件,以及这些事件产生的时机。随着对象在特性上的差异,可能产生的事件也会有的不同。下面先介绍一些常用事件,及在程序设计中应用。,生与灭事件,事件 发生时机,initialize 窗体第一次被装入时,terminate 窗体最后一次被卸载时,load 窗体每一次被装入时,unload 窗体每一次被卸载时,queryunload 窗体每一次被卸载时,14,.,Initialize与load事件区别,同样都是发生在窗体被装入时,两者很容易混淆,实际上intialize事件只有在窗体第一次被装入时发生,而load事件是在窗体每次被装入时都有发生。,例:打开第三章formlife.vbp,什么程序代码写在intialize或load事件程序?,1)控件的初始化:几乎都是放在load事件程序中,因为控件会随着窗体的卸载而一起被清除,所以每次被装入时都要进行初始化。,2)变量的初始化:放在initialize事件程序中居多,因为变量的内容光焕发不会随着窗体的卸载波而消失。当然,如果希望每次窗体被装入时都有重新设置变量的内容,就要将变量的初始化放在load事件程序中。,如何禁止用户使用关闭按钮半闭窗体?,在unload事件程序中含有一个cancel参数,如果将这个参数设置为true则窗体就不能关闭。,15,.,例:在程序中不允许用户通过单击关闭按钮关闭窗体。,Dim switch as boolean,form_unload,if not switch then,cancel=true,endif,end sub,command1_click,switch=true,unload me,end sub,Queryunloadd与unload事件有何区别,queryunload比unload事件先发生。,16,.,Queryunload事件比unload事件多了一个unloadmode参数,unloadmode可以取值 意义,vbformcontrolmenu(=0),用户单击窗体上的关闭按钮,vbformcode(=1)unload语句调用,vbappwindows(=2)用户结束windows操作系统,也即可以利用unloadmode参数来判断用户是否用鼠标单击了窗体上的关闭按钮。借助queryunload事件的参数简化上面的程序。,Private sub command1_click(),unload me,end sub,private sub form_queryunload(cancel as integer,unloadmode as integer),if unloadmode=vbformcontrolmenu then cancel=true,end sub,17,.,Queryunload,事件另一个应用:,经常用来检验程序结束前,窗口关闭前是否已经保存了该保存的东西,如果尚未保存,就显示一个对话框的信息。,对话框msgbox函数使用。,Msgbox函数格式:,msgbox(prompt ,buttons,title),prompt:是一个字符串,设置显示在对话框中信息内容。,Buttons:(可选参数)用于显示对话框中显示按钮数。形式、图样见P77。,Tile:(可选参数)设置显示在对话框标题中信息。,title,prompt,buttons,18,.,例:练习使用msgbox函数(ch03练习11.vbp),1)调用msgbox显示两个按钮(是,否),提示信息“要关闭窗体吗?”。是,关闭窗体,否,,2)调用msgbox提示信息为“操作错误”显示图标为,3)调用msgbox提示信息为“没有满足条件的记录”,显示图标为:,例:(第三章练习5)编写一个程序,当用户单击窗体关闭按钮时,弹出对话框,要用户确定是否真的关闭窗体,是关闭,否取消关闭窗体。,状态改变的事件,事件发生时机,activate 当窗体成为活动窗口时,deactivate 当窗体不再是活动窗口时,gotfocus 对象获得焦点时,lostfocus 对象丢失焦点时,rezies 对象大小改变时,19,.,Activate与gotfocus事件有何区别,只有窗体对象才有activate事件,其他控件都有没有activate事件,它表示窗体变成“活动窗口”,gotfocus事件中,除了窗体对象含有这个事件外,其它控件如命令按钮,文本框、复选框、图片框等,也都有含有这个事件。,当光标落在某个对象上(对象获得焦点时)则会发生gotfocus事件。,例:当输入光标移到textbox时,整个textbox都变成被选区。,注:在textbox控件对象中有两个属性,用途是用来设置选取区。,Selstart 设置选取区的起始位置,sellength 用来设置选区的长度,private sub text1_gotfocus(),text1.selstart=0,text1.sellength=len(text1.text),end sub,例:(第三章练习六)当输入光标移到textbox时,希望将其文字颜色设置为红色,以提醒用户注意,当输入光标离开textbox其文字还原原来的黑色。,20,.,当窗体大小改变时会发生resize事件,例:让控件随着窗体一起调整大小。(在窗体上放置textbox及picturebox),private sub form_resize(),text1.left=0,text1.top=0,text1.width=me.scalewidth/2,text1.height=me.scaleheight,picture1.left=me.scalewidth/2,picture1.top=0,picture1.height=me.scaleheight,end sub,键盘类事件,事件 发生时机,keypress 用户按下键盘并且放开时,keydown 用户按下键盘时,keyup 用户放开按键时,21,.,例:(ch03/ex12.vbp)P85,鼠标类事件,事件 发生时机,click 用户在对象上按下鼠标左键并且放开时,dblclick 用户在对象上面双击鼠标时,mousedown 用户在对象上面按下鼠标左键时,mouseup 用户在对象上面放开鼠标左键时,mousemove 用户在对象上面移动鼠标时,mouseup和click事件有何区别,1)如果用户在对象上按下鼠标左键,而鼠标仍然在对象上时放开鼠标,会先发生mouseup事件再发生click事件。,2)若用户在对象上按下鼠标左键,然后将鼠标移到对象之外再放开鼠标:只发生mouseup事件。,3)若用户在对象之外按下鼠标左键,然后将鼠标移到对象上再入开鼠标:只发生mouseup事件。,22,.,Mouseup与click选择,在windows操作的惯例中,所谓“用鼠标单击”指的是“按下鼠标左键,不要移开鼠标并放开鼠标左键”(也就是click意思)。因此,如果程序想要针对用户“用鼠标单击”做反应,就应该 将程序编写在click事件程序中。,至于mouseup事件通常与mousedown配对使用。,例:写一个可供用户画线的程序,当用户按下鼠标左键时,决定线段的第一点,然后用户会移动鼠标,当放开鼠标左键时,就由第一点画一条线到鼠标指针所在的位置。(ch03,练习7a.vbp),如何在对象上作图,1)用pset方法画点,格式:对象名.pset(x,y),颜色,其中颜色可以用RGB函数指定或符号常量(vbred vbgreen vbblue),rgb(red,green,blue),其中:red,green,blue取值0255的整数。点的大小由对象的drawWidth属性决定。,功能:返回一个颜色值。,23,.,例:在窗体中随机地显示若干彩色的点。窗体上有两个命令按钮:“画点”和“退出”。单击“画点”按钮,则在窗体上随机画上若干点。单击“退出”按钮,结束程序的运行。(ch03,练习13.vbp),Private Sub Command1_Click(),For i=1 To 3000,x=Rnd*Width,y=Rnd*Height,r=Int(256*Rnd),g=Int(256*Rnd),b=Int(256*Rnd),PSet(x,y),RGB(r,g,b),Next i,End Sub,24,.,例:设计一个窗体使用鼠标在其上任意绘制图形。(ch03ex8.vbp),Dim mouse As Boolean mouse变量用来标志画图的开始,Private Sub Form_Load(),mouse=False,Me.ForeColor=vbRed,Me.DrawWidth=2,End Sub,Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single),mouse=True,PSet(X,Y),End Sub,25,.,Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single),If mouse Then,PSet(X,Y),End If,End Sub,Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single),mouse=False,End Sub,26,.,2)line,方法,对象.line step(x1,y1)-step(x2,y2),颜色,BF,功能:用来画直线和矩形框等。,Step:设置坐标值是绝对坐标还是相对坐标。(有step 是相对坐标),缺省step(x1,y1)时:从上一次画图点到当前点画直线。,选择B:利用对角坐标画出矩形。,选择F:矩形以矩形边框填充。,直线的宽度由对象的drawWidth指定,直线的样式由对象的drawStyle属性指定。(P145),3)circle方法,对象.circle step(x,y),r,c,sang,eang,mod,(x,y)园、园弧或者椭圆的园心坐标。,r 园、园弧的半径。,c 设置绘图颜色。,sang 在画园弧时设置园弧或椭圆弧的起始角度(0-2)。,eand 在画园弧时设置园弧或椭圆弧的终止角度(0-2)。,Mod 在画椭圆时设置椭圆的纵横比值(大于1则椭圆细而高),园的样式:由对象的fillStyle属性决定。P150。线的宽度由对象的drawWidth指定,线的样式由对象的drawStyle属性指定。,画扇形:则起始角及终止角都是取负值。(ch03ex10.vbp),27,.,例:设计一个窗体,单击绘图按钮时,在窗体绘制如下图形:(ch03ex9.vbp),Private Sub Command1_Click(),Circle(2500,1500),1000,Circle(2500,1500),1000,2.5,Form1.FillStyle=7,Circle(2500,1500),1000,0.4,End Sub,28,.,例:设计一个窗体,在上面绘制如下图所示的弧和扇形(ch03ex10.vbp),Const pi=3.14159,Private Sub Form_Load(),Me.Show,Me.ForeColor=vbRed,Me.DrawWidth=2,Circle(1800,500),1000,-pi,-1.5*pi,Circle(3500,500),1000,pi,1.5*pi,End Sub,29,.,例:1)在picture1(300,300)上画一点,(ch03,画图方法.vbp),2)在picture1上画从(600,600)(1000,1000)两点直线,颜色红色。,3)在picture1上画以点(1200,1000)到点(2000,2500)对角点矩形,颜色为绿色。,4)在picture1上画以(1500,600)为园心半径200,颜色为蓝色的园。,5)在picture1上画园弧,以(4500,600)为园弧园心,半径400,起始角90,0,,终止角270,0,。,6)在picture1上画椭圆,椭园园心为(3500,1500),半径为500,椭园横轴与纵轴比率0.5,线条颜色为黄色。,30,.,例:设计一个窗体,根据用户输入的三个班的学生人数,显示各班人数所占比例的饼图(ch03ex11.vbp),Option Explicit,Const pi=3.14159,Private Sub Command1_Click(),Dim a,b,c,s,i As Integer,a=Val(Text1.Text),b=Val(Text2.Text),c=Val(Text3.Text),s=a+b+c,31,.,Picture1.FillStyle=0,For i=1 To 200,Picture1.FillColor=vbRed,Picture1.Circle(1500,1500-i),1000,vbRed,-2*pi,-2*pi*a/s,2/3,Picture1.FillColor=vbGreen,Picture1.Circle(1500,1500-i),1000,vbGreen,-2*pi*a/s,-2*pi*(a+b)/s,2/3,Picture1.FillColor=vbBlue,Picture1.Circle(1500,1500-i),1000,vbBlue,-2*pi*(a+b)/s,-2*pi,2/3,Next i,Picture1.FillColor=vbRed,Picture1.Circle(1500,1500-i),1000,vbWhite,-2*pi,-2*pi*a/s,2/3,Picture1.FillColor=vbGreen,Picture1.Circle(1500,1500-i),1000,vbWhite,-2*pi*a/s,-2*pi*(a+b)/s,2/3,Picture1.FillColor=vbBlue,Picture1.Circle(1500,1500-i),1000,vbWhite,-2*pi*(a+b)/s,-2*pi,2/3,End Sub,32,.,回到上一例(ch03,练习7a.vbp),dim x0,y0 as integer,private sub form_mousedown(button as integer,shift as integer,x as single,y as single),x0=x,y0=y,me.mousepointer=2,end sub,private sub form_mouseup(button as integer,shift as integer,x as single,y as single),line(x0,y0)-(x,y),end sub,33,.,如何让画线的程序具有预览的功能?(ch03,练习7.vbp),所谓“预览”意思是移动鼠标时,可以看到要画的线,而当放开鼠标时,决定最终直线。,分析:,定义 全程变量 (x0,y0)表示画直线起始点,(x1,y1)表示上一次画直线的终点坐标。,1)利用mousedown获得画直线起始点,x0=x,y0=y,并将画图方式选择为:,me.drawmode=vbnotxorpen (原值:vbcopypen),含义:同一图形(在同一位置上)画两次等于没有画。,2)利用mousemove(鼠标移动时发生事件),首先注意画直线起始点确定没有?(有起始点才能画直线 isempty(x0)=false),第一次(从起始点)移鼠标时画直线(isempty(x1)=true),line(x0,y0)-(x,y),x1=x,y1=y,、,34,.,第二次(及以上)移动鼠标时:首先将上一次画直线擦去,(isempty(x1)=false )line(x0,y0)-(x1,y1),然后再画新的直线,line(x0,y0)-(x,y),x1=x,y1=y,3)利用mouseup事件捕获画直线最后一点。,如果有直线起始点(x0,y0)且有(x1,y1),首先擦去已画过直线 line(x0,y0)-(x1,y1),x1=empty,将画笔改回初始值:me.drawmode=vbcopypen,画直线:line(x0,y0)-(x,y),x0=empty,4)利用isempty(变量名)判断是否有直线的起始点及上一次画直线的终止点。(ch03练习7.vbp),对话框的设计,对话框是VB应用程序与用户进行信息交换的窗口,可以使用VB提供函数,msgbox函数或inputbox函数作为对话框,亦可以使用commondialog控件设计对话框,甚至用户自已设计对话框。,35,.,Inputbox函数,inputbox(prompt,title),prompt:用于设定显示在对话框中的信息内容。,Title:是一个可选参数,用于设定显示在对话框中标题的信息内容。,函数返回值:返回用户输入字符串,如果用户单击cancel则返回空字符串。,注意:使用inputbox函数作对话框,一般只用于简单数据输入到窗口。,例:编写一个具有预览功能画弧程序。(ch03练习10.vbp),在对象上画弧的方法:,对象名.circle (x,y),r,c,sang,eang,1)在通用中定义全局变量,Dim ang1,ang2 As Single,Dim r1 As Single,Dim x0,y0 As Single,2)在窗体上放置一个命令按钮,单击命令按钮开始画弧,输入画弧起始角及终止角。,36,.,Private Sub Command1_Click(),pi=3.14,ang1=pi*(Val(InputBox(输入起始角:)/180,ang2=pi*(Val(InputBox(输入终止角:)/180,End Sub,3)在mousedown,事件中获得画弧的园心。,Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single),x0=X,y0=Y,Me.DrawMode=vbNotXorPen,End Sub,4)在mousemove事件中,将上一次弧擦掉,画新的弧。,37,.,Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single),If Not IsEmpty(x0)Then,If Not IsEmpty(r1)Then,Circle(x0,y0),r1,ang1,ang2,End If,r1=(X-x0)2+(Y-y0)2)0.5,Circle(x0,y0),r1,ang1,ang2,End If,End Sub,38,.,5)在mouseup 事件中画出最后图形,Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single),If Not IsEmpty(x0)Then,If Not IsEmpty(r1)Then,Circle(x0,y0),r1,ang1,ang2,End If,Me.DrawMode=vbCopyPen,r1=(x0-X)2+(y0-Y)2)0.5,Circle(x0,y0),r1,ang1,ang2,x0=Empty,r1=empty,End If,End Sub,39,.,3.7 主动模式的程序设计,除了“事件驱动”程序设计模式之外,VB也允许我们将程序设置成“主动模式”。主动模式的程序与以前我们所讲DOS程序很相似。,如何将程序设置为主动模式,1)启动VB,建立一个“标准EXE”工程,选取“工程/工程名称属性”菜单命令,在“工程属性”对话框中,将“启动对象”设置为“sub main()”,2)利用菜单的“工程/添加模块”命令新增一个模块,在标准模块的代码窗口中输入sub main子程序。,3)执行这个程序。,例:建立一个工程名为:主动.vbp 工程,并且在该工程中建立一个submain()子程序,读取用户数据,且设置为启动对象。,1)启动VB,在“工程/工程属性”中将“启动对象设置为:submain,2)在“工程/添加模块”中添加一个标准模块。在标准模块代码窗口中输入submain子程序。,40,.,使用,MSChart,控件绘制图形,除了利用,line,和,circle,方法绘制各种几何图形外,也可以直接利用,VB,中的,MSChart,控件支持真正的三维表示,支持所有主要的图表类型,值和数据点以条形图、折线图、标记图、填充区域图或饼图形式显示。,41,.,sub main(),dim s as string,s=inputbox(“请输入数据“),msgbox “您输入了”+s,end sub,doevents,与主动模式程序,对VB程序而言,主动模式与事件驱动模式是可以并存的,如果我们所编写的程序只含有主动模式程序代码,将语句一行一行地编写成主程序和相关子程序即可。,但是如果所编写的程序同时有主动模式和事件驱动模式的程序代码,那么就不应该让主动模式的程序执行费时很多工作,因为主动模式的程序执行时,其他事件驱动模式的程序代码将被锁住,而无法执行。,当然有时候还是很难避免让主动模式的程序执行费时很久的工作,就必须在主程序中插入doevents语句使主程序做间歇性的休息,允许其他的事件驱动模式的程序代码有机会被执行。,42,.,例:打开ch03doevets.vbp,工程,43,.,44,.,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服