国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

VB編程步步高-代碼效率篇

2019-11-18 17:42:45
字體:
供稿:網(wǎng)友
了解對(duì)象的類型

  如果你想知道一個(gè)對(duì)象是否是特殊的類型,請(qǐng)編寫下面的代碼:

  IfTypeOfobjIsListItemThen...

  如果想得到對(duì)象類型的名字,使用:

  MsgBox"Theitemisa"&TypeName(obj)

  控制長(zhǎng)時(shí)間的循環(huán)

  當(dāng)程序陷入一個(gè)很長(zhǎng)時(shí)間的循環(huán)中時(shí),你就不可能點(diǎn)擊任何一個(gè)命令按鈕或者按鍵。這樣對(duì)于用戶來說,就很不好控制。或許用戶不想再執(zhí)行循環(huán),通過點(diǎn)擊Cancel按鈕退出呢?怎么解決這個(gè)問題?答案是:使用DoEvents命令!就是說,在循環(huán)的開始執(zhí)行DoEvents命令,就象下面的代碼一樣:

  DimiAsLong

Fori=1To1000000
DoEvents
...
Nexti
  實(shí)際上,DoEvents命令并不需要放置在第1行,將它放在循環(huán)中的任何地方都可以。這樣做后,程序的其他部分,比如一個(gè)結(jié)束循環(huán)的命令按鈕,就又機(jī)會(huì)接受點(diǎn)擊事件了。

  使長(zhǎng)循環(huán)運(yùn)行更快

  我發(fā)現(xiàn),一般情況下,使用API函數(shù)GetInputState來檢查程序輸入隊(duì)列的數(shù)值是較好的。我不知道為什么If語句提高了代碼運(yùn)行速度,但實(shí)際上確實(shí)是工作得很好。

  因此,可以將下面的代碼行

  DoEvents

  替換為

  IfGetInputState()ThenDoEvents

  試一試吧!

  其實(shí),這里面的原因在于:DoEvents語句允許任何應(yīng)用程序執(zhí)行相關(guān)事件,而不僅僅是你自己的程序。加入了GetInputState的判斷后,就只接受你自己的程序的事件動(dòng)作了!

讓SelectCase更簡(jiǎn)單

  讓我們看看下面的例子:通過用戶點(diǎn)擊不同組合的標(biāo)簽,建立一個(gè)字符串:

lbl(0)="Hello"
lbl(1)="I注釋:m"
lbl(2)="Happy"
lbl(3)="Sad"
...

sublbl_click(indexasinteger)
string$=string$ lbl(index).caption

  然后,你就必須要編寫一系列的selectcase語句來分析這個(gè)字符串...
selectcasestring$
case"HelloI注釋:mHappy"
dosomething
case"HelloI注釋:m"
thiswouldbeanerror...
caseelse
dosomethingelse
endselect

  可以看出,這將非常得復(fù)雜,特別是又許多標(biāo)簽而且需要合并操作的合法檢查時(shí)。

  為了解決這個(gè)難題,我創(chuàng)建了一個(gè)數(shù)組,它與標(biāo)簽的數(shù)目等長(zhǎng):

  arraylbl(n)asinteger

  數(shù)組起始數(shù)值為1,然后每個(gè)項(xiàng)目的值等于前一個(gè)的值乘以2(value*2),就象這樣:1248163264...這樣,每一對(duì)標(biāo)簽的組合都會(huì)又一個(gè)唯一的數(shù)值“

  lbl(0) lbl(1)=1 2=3
lbl(0) lbl(1) lbl(4)=1 2 16=19

  現(xiàn)在,當(dāng)點(diǎn)擊一個(gè)標(biāo)簽時(shí),將它對(duì)應(yīng)的lblarray()數(shù)值添加進(jìn)變量中。這樣,基于幾個(gè)數(shù)字,就可以簡(jiǎn)單地編寫selectcase語句了:

selectcaseIsLegal
case3
注釋:thestringwasvalid
callgoodstuff
case19
注釋:thestringwasvalid
callgoodstuff
caseelse
注釋:invalid
callnogood
endselect

  呵呵,有時(shí)候,將字符進(jìn)行數(shù)字化,能起到意想不到的好效果!->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平乡县| 贵港市| 子洲县| 陆河县| 涿州市| 永胜县| 沐川县| 兴隆县| 邯郸县| 通化县| 南靖县| 临颍县| 苍溪县| 深圳市| 晋江市| 七台河市| 合肥市| 安吉县| 咸宁市| 大石桥市| 当雄县| 乌海市| 盐亭县| 洪雅县| 静宁县| 含山县| 木兰县| 资兴市| 台东县| 灵丘县| 华容县| 平乐县| 大化| 湛江市| 灵寿县| 江口县| 沙河市| 泰宁县| 东乌| 临沧市| 皮山县|