VisualBasic编程问答集.docx
- 文档编号:4917607
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:21
- 大小:28.76KB
VisualBasic编程问答集.docx
《VisualBasic编程问答集.docx》由会员分享,可在线阅读,更多相关《VisualBasic编程问答集.docx(21页珍藏版)》请在冰豆网上搜索。
VisualBasic编程问答集
VisualBasic编程问答集!
[b][color=Blue][size=3]如何一行程序太长,查阅起来很麻烦,能不能换行?
VB的程序代码是允许换行书写的,只要在每次换行的最后一个字
符加上换行字符“_”就可以了。
例如:
SubPicMove()
Frm.Picture2.Left=Frm.Picture1.Left+_ ’加上换行符
Frm.Picture1.Width
EndSub
□如何在设计的时候清空存在的图片?
用鼠标点中该图片,按F4列出其属性窗口,然后再选中Picture
属性,按Del键便可清空图片。
□VisualBasic如何注释一段较长程序代码?
VB注释程序代码的符号是“'”,只要在某行程序前面加上
“'”,就可以注释该行程序。
但如果程序代码很长的时候,一行
一行地注释令人觉得难以忍受。
VB本身提供了这个功能,在主菜
单“视图”选项的“工具栏”下,选中Edit,VB的界面会出现
一排工具按钮,其中的(图片)用于“设置注释块”和“解除注
释块”。
□怎么实现鼠标一移上去就出现小提示窗口的功能?
VB5.0里每个控件都有ToolTipText属性,只要加上一行程序
就可以了。
例如:
Label1.ToolTipText="这是提示!
"。
□如何获得当前软件的运行磁盘目录和命令行参数?
VB里面有个系统对象叫App。
App.Path就是当前软件的运行目
录。
而命令行参数存放在一个系统变量里面,叫Command。
程序语
句如下:
Label1.Caption=App.Path
Label2.Caption=Command$
□我想换掉鼠标显示的形状,怎么做?
VB提供的系统控件一般都有MousePointer和MouseIcon属性。
我们可以寻找自己喜欢的*.ICO,*.CUR文件,实现的程序如下:
Screen.MousePointer=99 ’用户鼠标类型
Screen.MouseIcon=LoadPicture("C:
\ABC\1.ICO")’读取鼠标文件
□如何判断一个文件是否存在?
可以通过打开该文件试图读取资料的方法实现,如果文件打开
成功,证明该文件存在;反之,文件就不存在。
FunctionFileExists(fname$)AsBoolean
OnErrorResumeNext ’设置错误处理
DimXasInteger
X=FreeFile ’取得一个空闲文件句柄
Openfname$ForInputAsX ’试图打开该文件
IfErr=0Then ’如果打开成功
FileExists=True
Else ’否则
FileExists=False
EndIf
CloseX
EndFunction
□如何设置程序的错误出口?
OnError语句用于程序的错误出口处理。
一般的处理方法有两种。
1) 遇到错误跳转到某一行程序去执行,OnErrorGoTosomeline。
例如:
OnErrorGoToERR_LINE
...
Label1.Caption=“正确执行”
ERR_LINE:
...
Label1.Caption=“出错了!
”
2) 遇到错误之后忽略当前错误,继续执行,OnErrorResumeNext。
例如:
3) OnErrorResumeNext
...
Label1.Caption=“不管对不对都要执行”
...
□怎样获得键盘输入和判断敲键的Ascii值?
把窗体的KeyPreview属性设置成True,然后在Form_KeyPress
事件里编写程序代码如下:
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
Me.Caption=Str(KeyAscii)
...
EndSub
□VB有位操作吗?
怎么知道一个字节的某个位的值?
下面是一个字节的异或操作例子:
PrivateSubForm_Click()
DimbitvalueAsByte ’定义字节变量
bitvalue=&H10 ’16进制赋值
bitvalue=bitvalueXor&H10 ’异或操作XOR
Debug.Printbitvalue ’输出结果
EndSub
□我希望窗体一运行就在屏幕的中央,怎么实现?
VB的系统对象Screen记录了当前显示模式的高度和宽度,
可以利用这个值来设置窗体的位置。
SubCenterForm(frmAsForm) ’定义过程
frm.Move(Screen.width-frm.width)\2,(Screen.Height-frm.Height)\2
EndSub
PrivateSubForm_Load()
CenterFormMe ’调用过程
EndSub
□很多软件都有鼠标一按下文字框TextBox,就选中所有文
字的功能,是怎么实现的?
SubTextFocus(ctlAsControl) ’定义过程
ctl.SelStart=0
ctl.SelLength=Len(ctl.Text)
EndSub
PrivateSubText1_GotFocus()
TextFocusText1 ’过程调用
EndSub
□如何屏蔽列表框Combo的键盘输入?
PrivateSubCombo1_KeyPress(KeyAsciiAsInteger)
KeyAscii=0
EndSub
//Liangent注:
其实更简单地,把Style属性设成3就行了
□如何使一行字符串垂直显示?
’函数:
垂直显示字符串
FunctionRotateString(in_strAsString)AsString
DimtmpstrAsString
’把每个字符都取出来加上回车换行符号
Fori=1ToLen(in_str)
tmpstr=tmpstr+Mid$(in_str,i,1)&vbCrLf
Nexti
RotateString=tmpstr
EndFunction
PrivateSubForm_Click()
Label1.Caption=RotateString("你知道我在这里吗?
")
EndSub
□如何定义一个数据结构?
VisualBasic是使用Type...EndType来实现数据结构的
定义的。
例如:
'矩形描述定义
TypeRECT_STRUCT
Left AsInteger ’坐标
Top AsInteger
Right AsInteger ’宽高
Bottom AsInteger
Color AsLong ’颜色
Caption AsString ’标题
EndType
Dim MyRect AsRECT_STRUCT ’根据数据结构定义结构变量
□如何把变量的数据写入文件,再从文件里读出来?
文件的操作有打开文件(Open)、写入文件(Write)、读取文
件(Input),关闭文件(Close)。
’写入文件操作
FunctionSaveData(fname$)AsBoolean
OnErrorResumeNext ’设置错误处理
Dimint1AsInteger
Dimstr1AsString
DimXAsInteger
int1=20 ’变量赋初值
str1=“这是字符串”
X=FreeFile ’取得一个空闲文件句柄
Openfname$ForOutputAsX ’试图打开该文件
IfErr<>0Then ’如果打开不成功
SaveData=False
ExitFunction
EndIf
WriteX,int1,str1
CloseX
SaveData=True
EndFunction
’读取文件操作
FunctionReadData(fname$)AsBoolean
OnErrorResumeNext ’设置错误处理
Dimint1AsInteger
Dimstr1AsString
DimXasInteger
X=FreeFile ’取得一个空闲文件句柄
Openfname$ForInputAsX ’试图打开该文件
IfErr<>0Then ’如果打开不成功
ReadData=False
ExitFunction
EndIf
InputX,int1,str1
CloseX
ReadData=True
’输入执行结果
Debug.Printint1,str1
EndFunction
□我想在窗体中按下鼠标右键就弹出一个菜单,怎么做?
首先按下Ctrl+E设计一个菜单PopMenu(具体的菜单设计操作参考
帮助文件),把菜单的Visible设置成False。
在Form_MouseUp中编写
程序如下:
IfButtonAnd2 ’鼠标右键按下
PopupMenuPopMenu
EndIf
□VisualBasic里面的整数和字符串如何互相转换?
VB提供了系统函数Val()和Str(),可以用来实现整数和字符串之间的
转换。
例子如下:
SubStr2Int()
Dimint1AsInteger
Dimstr1AsString
int1=100
str1=Str(int1)
Debug.Printstr1
str1=“400”
int1=Val(str1)
Debug.Printint1
EndSub
□我可以在一个窗体里执行别的窗体的程序代码吗?
是可以的,我们可以用“窗体.代码”的模式去执行别的窗体的代
码。
先假设我在窗体frm2里要执行窗体frm1的Form_Click代码,程
序如下:
PrivateSubForm_Click()
frm1.Form_Click() ’在frm2里执行frm1的From_Click代码
EndSub
□如何在不改变数组内容的情况下重定义数组的范围?
ReDim可以用来重新定义数组的范围,重定义后还要保留数组
的原值,可以用Preserve说明。
例如:
SubReDim_Data()
Dimtmpdim()asInteger ’定义一个未知范围的数组
ReDim tmpdim(10) ’设定数组的范围0..9
tmpdim(0)=1
tmpdim
(1)=2
ReDimPreservetmpdim(20) ’设定数组的范围0..19,并保留数据
Debug.Printtmpdim(0),tmpdim
(1),
EndSub
□怎样运行在我的程序里执行别的软件?
系统提供的函数Shell可以解决这个问题。
Shell函数的参数为可执
行文件名和运行模式。
例如:
Shell“C:
\PWIN95\WORDPAD.EXE README.TXT”,1
□如何用打印机输出一张图片?
先把图片调入窗体中,然后用PaintPicture方法(Method)把图片打印
出来。
SubPrintPhoto()
Picture1.Picture=LoadPicture(“C:
\ABC\1.BMP”)
Printer.PaintPicture Picture1.Picture,Picture1.Left,Picture1.Top,_
Picture1.Width,Picture1.Height,vbMergeCopy
EndSub
WriteX,int1,str1
CloseX
SaveData=True
EndFunction
’读取文件操作
FunctionReadData(fname$)AsBoolean
OnErrorResumeNext ’设置错误处理
Dimint1AsInteger
Dimstr1AsString
DimXasInteger
X=FreeFile ’取得一个空闲文件句柄
Openfname$ForInputAsX ’试图打开该文件
IfErr<>0Then ’如果打开不成功
ReadData=False
ExitFunction
EndIf
InputX,int1,str1
CloseX
ReadData=True
’输入执行结果
Debug.Printint1,str1
EndFunction
□我想在窗体中按下鼠标右键就弹出一个菜单,怎么做?
首先按下Ctrl+E设计一个菜单PopMenu(具体的菜单设计操作参考
帮助文件),把菜单的Visible设置成False。
在Form_MouseUp中编写
程序如下:
IfButtonAnd2 ’鼠标右键按下
PopupMenuPopMenu
EndIf
□VisualBasic里面的整数和字符串如何互相转换?
VB提供了系统函数Val()和Str(),可以用来实现整数和字符串之间的
转换。
例子如下:
SubStr2Int()
Dimint1AsInteger
Dimstr1AsString
int1=100
str1=Str(int1)
Debug.Printstr1
str1=“400”
int1=Val(str1)
Debug.Printint1
EndSub
□我可以在一个窗体里执行别的窗体的程序代码吗?
是可以的,我们可以用“窗体.代码”的模式去执行别的窗体的代
码。
先假设我在窗体frm2里要执行窗体frm1的Form_Click代码,程
序如下:
PrivateSubForm_Click()
frm1.Form_Click() ’在frm2里执行frm1的From_Click代码
EndSub
□如何在不改变数组内容的情况下重定义数组的范围?
ReDim可以用来重新定义数组的范围,重定义后还要保留数组
的原值,可以用Preserve说明。
例如:
SubReDim_Data()
Dimtmpdim()asInteger ’定义一个未知范围的数组
ReDim tmpdim(10) ’设定数组的范围0..9
tmpdim(0)=1
tmpdim
(1)=2
ReDimPreservetmpdim(20) ’设定数组的范围0..19,并保留数据
Debug.Printtmpdim(0),tmpdim
(1),
EndSub
□怎样运行在我的程序里执行别的软件?
系统提供的函数Shell可以解决这个问题。
Shell函数的参数为可执
行文件名和运行模式。
例如:
Shell“C:
\PWIN95\WORDPAD.EXE README.TXT”,1
□如何用打印机输出一张图片?
先把图片调入窗体中,然后用PaintPicture方法(Method)把图片打印
出来。
SubPrintPhoto()
Picture1.Picture=LoadPicture(“C:
\ABC\1.BMP”)
Printer.PaintPicture Picture1.Picture,Picture1.Left,Picture1.Top,_
Picture1.Width,Picture1.Height,vbMergeCopy
EndSub
□怎样取得一个字符串在另外一个字符串中出现的次数?
PublicFunctionsCount(String1AsString,String2AsString)AsInteger
DimIAsInteger,iCountAsInteger
I=1
Do
If(I>Len(String1))ThenExitDo
I=InStr(I,String1,String2,vbTextCompare)
IfIThen
iCount=iCount+1
I=I+2
DoEvents
EndIf
LoopWhileI
sCount=iCount
EndFunction
□怎样在一个字符串中删除里面的另外一个字符串?
PublicSubsRemove(String1AsString,String2AsString)
DimIAsInteger
I=1
Do
If(I>Len(String1))ThenExitDo
I=InStr(I,String1,String2)
IfIThen
String1=Left$(String1,I-1)+Mid$(String1,I+Len(String2)+1)
I=I+2
DoEvents
EndIf
LoopWhileI
EndSub
//Liangent注:
貌似简单地replace函数即可
□怎样在一个字符串中替换里面的另外一个字符串?
PublicSubsReplace(String1AsString,String2AsString,RepStringAsString)
DimIAsInteger
I=1
Do
If(I>Len(String1))ThenExitDo
I=InStr(I,String1,String2)
IfIThen
String1=Left$(String1,I-1)+RepString+Mid$(String1,I+Len(Stri
ng2)+1)
I=I+2
DoEvents
EndIf
LoopWhileI
EndSub
//Liangent注:
貌似简单地replace函数即可
□如何计算一个字符串中的行数?
FunctionCountStringLine(src_stringAsString)AsInteger
OnErrorResumeNext
Dimstring_flagAsInteger
Dimline_cntAsInteger
Dimtest_stringAsString
line_cnt=0 '初始-->行数为1
string_flag=1 '标志为1
test_string=src_string
DoEvents
Do
line_cnt=line_cnt+1
string_flag=InStr(test_string,vbCrLf) ’判断回车换行
test_string=Right(test_string,Len(test_string)-string_flag-1)
LoopUntilstring_flag<=0
CountStringLine=line_cnt
EndFunction
□如何从一个字符串中读取一行字符?
FunctionReadStringLine(src_strAsString,linenoAsInteger)AsString
OnErrorResumeNext
Dimstring_flagAsInteger
Dimline_cntAsInteger
Dimtest_stringAsString
Dimret
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualBasic 编程 问答
![提示](https://static.bdocx.com/images/bang_tan.gif)