Dim sFileName As String
創新互聯是專業的猇亭網站建設公司,猇亭接單;提供網站制作、做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行猇亭網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
Dim Search
Private Sub dateTimeMenu_Click()
Text1.Text = Now
End Sub
Private Sub deleteMenu_Click()
Text1.Text = Left(Text1.Text, Text1.SelStart) + Mid(Text1.Text, Text1.SelStart + Text1.SelLength + 1)
End Sub
Private Sub findMenu_Click()
Search = InputBox("請輸入要查找的字詞:")
Dim Where1 '獲取需要查找的字符串變量
Text1.SetFocus '文本框獲得焦點,以顯示所找到的內容Search = InputBox("請輸入要查找的字詞:")
Where1 = InStr(Text1.Text, Search) '在文本中查找字符串
If Where1 Then
'若找到則設置選定的起始位置并使找到的字符串高亮
Text1.SelStart = Where1 - 1
Text1.SelLength = Len(Search)
' Me.Caption = Where1 '測試用
'否則給出提示
Else: MsgBox "未找到所要查找的字符串。", vbInformation, "提示"
End If
End Sub
Private Sub findNextMenu_Click()
Dim Where2
Dim StartMe As Integer '查找的起始位置變量
Text1.SetFocus '文本框獲得焦點
StartMe = Text1.SelLength + Text1.SelStart + 1 '給變量賦值
Where2 = InStr(StartMe, Text1.Text, Search) '令其從上次找到的地方找起
If Where2 Then
Text1.SelStart = Where2 - 1
Text1.SelLength = Len(Search)
Else: MsgBox "未找到所要查找的字符串.", vbInformation, "提示"
End If
End Sub
Private Sub aboutMenu_Click()
MsgBox Space(2) "文本編輯器版本號1.0" Chr(13) "由西南財經大學天府學院" Chr(13) Space(5) "肖忠 開發" Chr(13) Space(2) "copyright:天府學院"
End Sub
Private Sub allMenu_Click()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub backcolorMenu_Click() '設置背景色代碼
Form1.CommonDialog1.Action = 3
Text1.BackColor = Form1.CommonDialog1.Color
End Sub
Private Sub colorMenu_Click() '改變文字顏色代碼
Form1.CommonDialog1.Action = 3
Text1.ForeColor = Form1.CommonDialog1.Color
End Sub
Private Sub cutMenu_Click()
Clipboard.SetText Text1.SelText
Text1.Text = Left(Text1.Text, Text1.SelStart) + Mid(Text1.Text, Text1.SelStart + Text1.SelLength + 1)
End Sub
Private Sub exitMenu_Click()
End
End Sub
Private Sub fontMenu_Click() '字體菜單代碼
Form1.CommonDialog1.Flags = 3 Or 256
Form1.CommonDialog1.Action = 4
If Len(Form1.CommonDialog1.FontName) = 0 Then
Form1.Text1.FontName = "宋體"
Else
Form1.Text1.FontName = Form1.CommonDialog1.FontName
End If
Form1.Text1.FontSize = Form1.CommonDialog1.FontSize
If Form1.CommonDialog1.FontBold = True Then
Form1.Text1.FontBold = True
Else
Form1.Text1.FontBold = False
End If
If Form1.CommonDialog1.FontItalic = True Then
Form1.Text1.FontItalic = True
Else
Form1.Text1.FontItalic = False
End If
Text1.ForeColor = Form1.CommonDialog1.Color
End Sub
Private Sub Form_Load()
Form1.Text1.Width = Form1.Width - 130
Form1.Text1.Height = Form1.Height
End Sub
Private Sub Form_Resize()
Form1.Text1.Width = Form1.Width - 130
Form1.Text1.Height = Form1.Height
End Sub
Private Sub help1Menu_Click()
Form1.CommonDialog1.HelpCommand = cdlHelpForceFile
Form1.CommonDialog1.HelpFile = "c:\windows\system32\winhelp.hlp"
CommonDialog1.ShowHelp
End Sub
Private Sub newMenu_Click()
If Len(Trim(Text1.Text)) = 0 Then
Form1.Caption = "我的記事本" "--" "未命名"
sFileName = "未命名"
Text1.FontSize = 15
Text1.FontName = "宋體"
Text1.Text = ""
Else
Call saveAsMenu_Click
Form1.Caption = "我的記事本" "--" "未命名"
sFileName = "未命名"
Text1.FontSize = 15
Text1.FontName = "宋體"
Text1.Text = ""
End If
End Sub
Private Sub openMenu_Click() '打開文件代碼
If Len(Trim(Text1.Text)) = 0 Then
Form1.Caption = "我的記事本"
Form1.CommonDialog1.Filter = "文本文件|*.txt"
Form1.CommonDialog1.Flags = 4096
Form1.CommonDialog1.Action = 1
If Len(Form1.CommonDialog1.FileName) 0 Then
sFileName = Form1.CommonDialog1.FileName
Form1.Caption = Form1.Caption "--" Form1.CommonDialog1.FileTitle
Open sFileName For Input As #1
Text1.FontSize = 15
Text1.FontName = "宋體"
Do While Not EOF(1)
Line Input #1, Text$
All$ = All$ + Text$ + Chr(13) + Chr(10)
Loop
Text1.Text = All
Close #1
End If
Else
Call saveAsMenu_Click
Form1.Caption = "我的記事本"
Form1.CommonDialog1.Filter = "文本文件|*.txt"
Form1.CommonDialog1.Flags = 4096
Form1.CommonDialog1.Action = 1
If Len(Form1.CommonDialog1.FileName) 0 Then
sFileName = Form1.CommonDialog1.FileName
Form1.Caption = Form1.Caption "--" Form1.CommonDialog1.FileTitle
Open sFileName For Input As #1
Text1.FontSize = 15
Text1.FontName = "宋體"
Do While Not EOF(1)
Line Input #1, Text$
All$ = All$ + Text$ + Chr(13) + Chr(10)
Loop
Text1.Text = All
Close #1
End If
End If
End Sub
Private Sub pasteMenu_Click() '粘貼菜單代碼
Text1.Text = Left(Text1.Text, Text1.SelStart) + Clipboard.GetText() + Mid(Text1.Text, Text1.SelStart + Text1.SelLength + 1)
End Sub
Private Sub printMenu_Click()
Form1.CommonDialog1.ShowPrinter
For i = 1 To CommonDialog1.Copies
Printer.Print Text1.Text
Printer.Print Text1.Text
Next
Printer.EndDoc
End Sub
Private Sub saveAsMenu_Click() '另存為菜單代碼
If Len(Trim(Text1.Text)) 0 Then
Form1.CommonDialog1.DialogTitle = "保存文件"
Form1.CommonDialog1.InitDir = "D:\"
Form1.CommonDialog1.Filter = "文本文件|*.txt"
Form1.CommonDialog1.Flags = 2
Form1.CommonDialog1.ShowSave
If Len(Form1.CommonDialog1.FileName) 0 Then
sFileName = Form1.CommonDialog1.FileName
Open sFileName For Output As #1
whole$ = Text1.Text
Print #1, whole
Close #1
End If
End If
End Sub
Private Sub saveMenu_Click()
If Len(Trim(Text1.Text)) 0 Then
Form1.CommonDialog1.DialogTitle = "保存文件"
Form1.CommonDialog1.InitDir = "D:\"
Form1.CommonDialog1.FileName = "新建文本"
Form1.CommonDialog1.Filter = "文本文件|*.txt"
Form1.CommonDialog1.Flags = 2
Form1.CommonDialog1.ShowSave
If Len(Form1.CommonDialog1.FileName) 0 Then
sFileName = Form1.CommonDialog1.FileName
Open sFileName For Output As #1
whole$ = Text1.Text
Print #1, whole
Close #1
End If
End If
End Sub
Private Sub statusMenu_Click()
End Sub
在VB.NET操作縮放圖像中的顯示和保存縮放圖像,用到Image和Graphics類,在VSDotNet2K3下面Reference里自動添加了引用System.Drawing,直接用就行。
實現VB.NET操作縮放圖像代碼如下:DimimgAsImageImage=Image.FromFile
(D:\Image\tstImage.jpg)
''tstImage是原先的圖片DimgrfxAsGraphics=Me
.CreateGraphics
grfx.DrawImage(img,0,0,img.Width*
3,img.Height*3)''在Form里顯示
DimimgnewAsNewSystem.Drawing.Bitmap
(img,img.Height*3,img.Width*3)
''新建一個放大的圖片
imgnew.Save(D:\Image\tstNewImage.jpg,
System.Drawing.Imaging.ImageFormat.Jpeg)
''保存放大后圖片
你可以建一個Form,然后在Form里拖進一個Button,把上面的代碼放在Button_Click事件里面源碼天空
,執行就行了。
對上面VB.NET操作縮放圖像代碼的解釋:
1.要獲取Graphics對象只能從某一事件的參數中獲取或者使用窗體和控件對象的CreateGraphics方法來獲取-----上面代碼使用Me.CreateGraphics來引用這個對象。
2.加載一個圖片用Image類的FromFile或者FromStream方法
3.用DrawImage來顯示一個圖片,該方法有30多個重載方法,可以查MSDN了解細節。
4.保存時的一個問題:我們必須先建一個對象,用于存縮放圖像。
本文的討論也將著眼于這兩種情況 首先是當程序員需要動態建立一個控件并將代碼附著于控件之上時 例如 你或許想創建一個鏈接列表 但是不知道需要創建鏈接的數量或是鏈接中會出現什么樣的數據 第二種是當程序員需要定義代碼以反映出特殊需求的時候 例如 你或許要執行能反映用戶系統配置的代碼
類似上述的情況當然不會每天都上演 事實上 它們只在非常情況下才出現 然而 作為程序員 仍然要意識到 NET為解決動態情形提供了方案 有了正確的技巧 你就可以寫出能靈活處理動態情況的應用程序了
使用動態控件
許多程序員總會遇到需要動態創建控件的時候 我們所展示的例子中程序員向FlowLayoutPanel中添加了LinkLabels 或許你可以個這樣的設置來記錄和保存常用的URL 文件 網絡地址或是其他資源所在位置的數值 這一示例沒有真正保存鏈接 但是你可以使用XML序列化功能來實現保存
每次當用戶點擊Test按鈕時 示例代碼就會動態創建一個新的LinkLabel控件 真正的演示代碼并不復雜 例一就展示了創建這類控件以及將控件放入FlowLayoutPanel lstLabel中通常所需要做的一切
例一 向FlowLayoutPanel中添加新的鏈接 ?Private Sub btnTest_Click() Handles btnTest Click Create a link Dim NewLink As LinkLabel =New LinkLabel() Add some properties to it NewLink Text = DateTime Now ToLongTimeString() Set the click event handler AddHandler NewLink Click AddressOf NewLink_Click Place the button on the form lstLinks Controls Add(NewLink) End Sub
如你所料 該代碼開始的時候創建了一個新的LinkLabel并為其賦予了一些值 這一示例使用的是當前時間 你的代碼或許能夠對某一真實資源進行訪問
請注意該代碼也向鏈接的Click事件中指定了一個處理程序 你必須使用示例中的AddHandler技巧 因為普通的Handles關鍵詞路徑不起作用 一方面 設計應用程序的時候你并不清楚控件的名稱 即便你為控件指定了一個名稱 你也不知道用戶要創建的控件數量 所以我們沒有辦法清楚會有多少處理程序會被創建 處理程序的代碼與控件代碼類似 因此沒有必要創建多個處理程序 用于這個示例的處理代碼見例二 例二 處理動態控件點擊事件 ?Private Sub NewLink_Click( _ ByVal sender As System Object ByVal e As System EventArgs) Verify that you actually have a LinkLabelIf Not sender GetType() Is GetType(LinkLabel) ThenMessageBox Show( Wrong control type provided! )ReturnEnd If Convert the input sender to a Button Dim ThisLink As LinkLabel = sender Show that we have the correct button MessageBox Show( You created this link at: + ThisLink Text)End Sub
你可能已經注意到例一中的事件處理器使用的是寬松代表——它沒有將ByVal發送器作為System Object 也沒有將ByVal e作為System EventArgs作為參數因為它不需要這二者 然而 當你創建一個事件處理器來動態創建控件時 通常你需要將ByVal發送器作為System Object參數 這意味著將這兩者都包含其中
有些程序員在創建事件處理器的時候會出現一個錯誤 即沒有檢查傳入控件的類型 發送器對象可能包含多選擇 而如果未對事件處理器進行事件處理類型的設置 那么你就會面臨更多的選擇 我們的示例代碼一開始就檢查了傳入控件對象的類型 這樣以來發送器就不會像下面所展示的代碼一樣 ?Private Sub btnTest _Click() Handles btnTest Click Create a link Dim NewButton As Button = New Button() Add some properties to it NewButton Text = DateTime Now ToLongTimeString() Set the click event handler AddHandler NewButton Click AddressOf NewLink_Click Place the button on the form lstLinks Controls Add(NewButton)End Sub
此代碼在FlowLayoutPanel中創建了一個按鈕 大多數情況下這都能正常運行 除非事件處理器不按照按鈕所示的進行操作 如果你打算服務多個控件類型 那么每個控件類型都需要一個獨特的處理 你可以使用多事件處理器或者為某些類型提供選擇標準
NewLink_Click()事件處理器照常將傳入發送器轉換成指定類型 在這個示例中則是LinkLabel 該代碼可以訪問LinkLabel屬性并能用其他方式進行互動 在我們的示例中 只顯示了一個能在創建鏈接的時候告知我們的對話框
使用動態代碼
在運行時創建一個控件是在無法確定應用程序功能的時候采取的一種策略 但是動態創建控件并不適用于所有的情況 有些時候你必須建立可執行代碼 雖然你的應用程序運行的目的是補償不同極其之間的配置 不同用戶的需求 不同的環境需求或是其他要求 當應用程序所運行的電腦不存在控件 那么通常是需要創建動態代碼的
幸運的是 NET為我們提供了一系列動態代碼選項 例如 你可以創建一個可執行的能獨立運行的程序或是可以想運行中的程序加載一個DLL然后再執行 當你需要演示一個外部任務的時候可以使用選擇可執行 如運行一種腳本——該DLL選項最適合擴大現有的應用程序功能
你可以運行來自文件或內存的動態代碼 當你需要不止一次地運行代碼時 可以使用文件 對代碼的檢查可以再次運行外部文件而不需要對其進行二次編譯 當你需要多次演示任務的時候 如一個安裝請求 那可以使用內存圖像
當然我們也可以更改源代碼 例如 你可以使用字符串來建立需要在應用程序中直接使用的代碼 如果你需要代碼具有高度靈活性 且代碼本身不是很長時 這一方法的優勢就非常顯著 也可以從文件里建立代碼 就如同VS一樣 這一方法最適用于相對穩定且不需要復雜編碼的需求 第三種選擇是使用Documentation Object Model來創建代碼并將其作為CodeDom樹型結構的一個系列 該樹型結構包括了CodeCormpileUnits 這就像是用DOM模式創建了一個XML文件
使用動態創建代碼的最好方式是用示例來檢查一下 例三展示了一個基本 Hello World 示例 該示例用源代碼直接創建了代碼因此你可以看到整個運行以及生成一個外部可執行文件的過程
例三 動態編碼示例 ?Private Sub btnTest _Click() Handles btnTest Click Create a piler Dim Comp As VBCodeProvider = New VBCodeProvider() Define the parameters for the code you want to pile Dim Parms As CompilerParameters = New CompilerParameters) We do want to create an executable rather than a DLL Parms GenerateExecutable = True The piler will create an output assembly called Output Parms OutputAssembly = Output The piler won t treat warnings as errors Parms TreatWarningsAsErrors = False Add any assembly you want to reference Parms ReferencedAssemblies Add( System Windows Forms dll ) Define the code you want to run Dim SampleCode As StringBuilder = New StringBuilder() SampleCode Append( Imports System Windows Forms + vbCrLf) SampleCode Append( Module TestAssembly + vbCrLf) SampleCode Append( Sub Main() + vbCrLf) SampleCode Append( MessageBox Show( + Chr( ) + _ Dynamically Created Code! + _Chr( ) + ) + vbCrLf)SampleCode Append( End Sub + vbCrLf)SampleCode Append( End Module + vbCrLf) Define the code to run Dim Executable As CompilerResults = _ Comp CompileAssemblyFromSource(Parms SampleCode ToString()) Display error messages if there are any If Executable Errors HasErrors ThenFor Each Item As CompilerError In Executable ErrorsMessageBox Show(Item ErrorText)NextElse If there aren t any error messages start the executable Process Start( Output )End IfEnd Sub
一開始你創建了一個使用VBCodeProvider的編譯器Comp 舊一點的 NET版本使用的是不同的方法但是這里所講的是微軟推薦的一個新方法
為了使用編譯器 你必須創建能描述應用程序的參數 這些參數類似于VS中你創建的參數 只是現在你可以對它們進行定義 該代碼一開始就將GenerateExecutable設置為True 這意味著你需要的是一個EXE文件而不是DLL
Parms OutputAssembly屬性包含了輸出文件的名稱 你只需要在想創建文件時提供這一信息即可 而不需要生成可執行內存了 如果你ixiang生成可執行文件的內存版本 可以將Parm GenerateInMemory屬性設置為True
使用Parm TreatWarningsAsErrors屬性來確定如何處理警告信息 默認的設置會使其為錯誤 這意味著你的應用程序可能無法對其進行編譯 大多數程序員使用默認設置 盡管他們開發了程序 但是在開發完成的程序中卻將其設置為False
大多數應用程序需要外部DLL以正常運行 當然 你不能創建任意的沒有引用外部DLL的Windows表單程序 通常 你要使用Reference文件夾來完成這一任務 不過 當你動態創建代碼的時候可以依賴于Parms ReferencedAssemblies屬性 如下所示 只需添加你要的DLL即可
現在 你已經定義了項目 接下來需要為其創建源代碼 如前文所述 你可以依賴于一個外部文件或DOM模式 然后 該示例創建了代碼因此你可以看到整個過程 下面是代碼的原始形式 ?Imports System Windows Forms Module TestAssemblySub Main()MessageBox Show( Dynamically Created Code! )End SubEnd Module
這個簡單的例子顯示了一個對話框 注意vbCrLf的使用 如果你不使用這一方法 那編譯器會發送給你一個錯誤信息 vbCrLf條目在該代碼中所起的作用與在程序代碼中的作用相同 只是添加的方式不一樣
從這一點老說 你最后會用Comp CompileAsseblyFromSource()方法編譯代碼 當使用DOM模式和文件的時候可以使用這一方法 而在所有三種情況中 編譯器用參數和源代碼創建了你請求的輸出 該運算的輸出出現在Executable中 是CompilerResults類型
編譯的失敗次數多于程序員的預計 無論你是在哪里使用動態編碼技巧 你必須假設會出現失敗的情況以及處理失敗的方案 在本例中 代碼尋找的是錯誤并在編譯失敗時將其展示在了信息框中 否則 代碼會依賴于Process Start()方法來啟用可執行文件
底線
動態編碼技巧并不是萬能鑰匙 當你為開發問題找到了好的靜態解決方案時 當然也可以使用 但是在我們所列出的情況中沒有可行的靜態方案 因此要選擇動態編碼技巧 大多數情況下 要用動態編碼技巧解決以下問題
◆ 用戶的環境會以不可預見的方式更改時
◆ 無法控制用戶電腦的安裝
◆ 用戶或應用程序都添加了你要用控件執行的數據要素
◆ 應用程序必須執行很早以前的安裝任務 且這些任務與電腦 環境 網絡或其他不確定因素聯系緊密時
◆ 應用程序要執行了處理級別的任務 且這些任務取決于機器連接或其他狀況
lishixinzhi/Article/program/ASP/201311/21812
VB的運算順序是:先乘除、后加減,有括號的先算括號內,有負號的先算負號。
請你比較一下這個運算中x和y的值:
Dim n As Single = 4
Dim x As Single
Dim y As Single
x = n + 1
x = x / n
x = x - 1
x = Math.Sqrt(x)
y = Math.Sqrt((n + 1) / n - 1)
這樣就會發現,你的代碼中括號的位置錯了。
正確的應該是: Math.Sqrt((n + 1) / n - 1)
文章標題:vb.net實驗三代碼的簡單介紹
本文來源:http://m.newbst.com/article0/doppiio.html
成都網站建設公司_創新互聯,為您提供自適應網站、電子商務、域名注冊、網站內鏈、定制開發、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯