参考:プログラム例(他にもやり方は多くあるが、一つの例として)
例1)フォルダ・ファイル関連
'---下位のフォルダ名・ファイル名を取得する---
Dim strFiles() As String, strFile As String '作業用変数
ListBox1.Items.Clear() '表示用ListBox
' - Folders下のフォルダ名を取得 -
strFiles = System.IO.Directory.GetDirectories(TextBox1.Text) '配列戻り
If UBound(strFiles) >= 0 Then '配列の最大添え字
For Each strFile In strFiles
ListBox1.Items.Add(strFile) '取得したフォルダ名を蓄積する
Next
End If
' - Files下のファイルパス名を取得 -
strFiles = System.IO.Directory.GetFiles(TextBox1.Text) '配列戻り
If UBound(strFiles) >= 0 Then '配列の最大添え字
For Each strFile In strFiles
ListBox1.Items.Add(strFile) '取得したファイルパス名を蓄積する
Next
End If
'---ファイル有無、および読込---
Dim buf As String = ""
Dim moj As String = ""
Dim fNam As String = ".\123.txt"
Me.Cursor = Cursors.WaitCursor
If System.IO.File.Exists(fNam) Then
Dim myRdr As New System.IO.StreamReader(fNam, System.Text.Encoding.Default)
Do
buf = myRdr.ReadLine()
If buf Is Nothing Then Exit Do
lpCnt += 1
moj &= Format(lpCnt, "000") & " " & buf & vbCrLf
Loop
myRdr.Close()
TextArea.Text = moj
LabMssg.Text = "Record数=" & lpCnt
Else
LabMssg.Text = "ファイルが存在しない。"
End If
Me.Cursor = Cursors.Default
' -または-
Dim moj As String = ""
If System.IO.File.Exists(".\123.txt") Then
moj = System.IO.File.ReadAllText(".\123.txt", System.Text.Encoding.Default)
End If
'---ファイル有無(その2)とファイル長---
Dim fiLen As Integer = -1
Dim myInfo As New System.IO.FileInfo(".\123.txt") 'File無くてもError発生せず
If myInfo.Exists Then
fiLen = myInfo.Length '←File無い時,いきなりやればErrorになる
End If
'---その他ファイルに関連するメソッド---
Dim moj As String
Debug.Print("カレント=(" & My.Computer.FileSystem.CurrentDirectory & ")")
' VB2005に curdir関数も有るが
moj = System.IO.Path.GetExtension("....") ' FullPathからFile拡張子を得る
moj = System.IO.Path.GetDirectoryName("....") ' FullPathからFolder名を得る
moj = System.IO.Path.GetFileName("....") ' FullPathからFile名を得る
'---Text_Fileへ書き込み---
Dim myWriter As New System.IO.StreamWriter _
(".\newForm1.ini", False, System.Text.Encoding.Default) 'False:上書,True:追加
Dim lp As Integer, buf As String
If iniCnt < 0 Or 9 < iniCnt Then iniCnt = 1
For lp = 0 To iniCnt
buf = "" 'エラーに備えて
buf = iniBuf(lp)
myWriter.Write(buf & vbCrLf)
Next lp
myWriter.Close()
'---Text_Fileから読み込み---
If System.IO.File.Exists(".\file-1.ini") Then
Dim buf As String
Dim myReadr As New System.IO.StreamReader _
(".\file-1.ini", System.Text.Encoding.Default)
'--- Do While Not buf Is Nothing ---- 'Do条件がFalseになっても1度通るから
Do
buf = myReadr.ReadLine()
If buf Is Nothing Then Exit Do 'この方が分かりやすい
' ...(略)...
Loop
myReadr.Close()
End If
例2)ToopTipTextの設定(Form_Loadなどで一度だけ)
'---ToopTipTextを定義---
Dim toolTip1 As New ToolTip()
toolTip1.AutoPopDelay = 8000 'ms後に消す
toolTip1.InitialDelay = 500 'ms後に出す
toolTip1.ReshowDelay = 500 '別のCtrlに移った時、ms後に出す
toolTip1.ShowAlways = True
toolTip1.SetToolTip(Me.ButtPcmAxGet, "TextBox1にPcm_Dataファイル名を記入")
toolTip1.SetToolTip(Me.ButtAddmoj, "VB2005機能確認:LabelをShape的に")
例3)グラフィックディスプレー機能
'---Form上に直線を描く---
Dim x1 as Integer, y1 as Integer, x2 as Integer, y2 as Integer
'- Dim myPen1 As New Pen(Color.Aquamarine, 3) '色名を使う場合
Dim myPen1 As New Pen(Color.FromArgb(255, 128, 0), 3) '(RGB), width
Dim g As Graphics = Me.CreateGraphics
g.DrawLine(myPen1, x1, y1, x2, y2) '引数はSingleまたはPoint構造体も
g.Dispose()
myPen1.Dispose()
'---Form上にポリゴンを描く---
Dim lp As Long
Dim g As Graphics = Me.CreateGraphics
Dim arc(Nlins * 2) As Point
g.Clear(Me.BackColor) 'Me.BackColorでクリア
For lp = 0 To Nlins - 1
arc(lp).X = Llins(0, lp)
arc(lp).Y = Llins(1, lp)
Next
arc(Nlins).X = Llins(0, 0)
arc(Nlins).Y = Llins(1, 0)
' - 中塗り - 'SolidBrush(Color.Yellow)
Dim myBrush As SolidBrush = New SolidBrush(Color.FromArgb(96, 240, 208, 144))
g.FillPolygon(myBrush, arc)
myBrush.Dispose()
' - 外周 - ' Pen(Color.Green, 3)
Dim pen1 As New Pen(Color.FromArgb(96, 224, 64), 3)
g.DrawPolygon(pen1, arc)
g.Dispose()
pen1.Dispose()
'---Form上に文字列を描く---
' - 文字列を縦書き -
Dim myGraph As System.Drawing.Graphics = Me.CreateGraphics()
Dim myFont1 As New System.Drawing.Font("MS ゴシック", 16)
Dim myBrush As New _
System.Drawing.SolidBrush(System.Drawing.Color.Black)
Dim drawFormat As New System.Drawing.StringFormat
Dim lp As Integer
Dim x As Single
Dim y As Single = 10.0
drawFormat.FormatFlags = StringFormatFlags.DirectionVertical
For lp = 0 To 3
x = 100.0 - lp * 28
myGraph.DrawString(mjTb(lp), myFont1, myBrush, x, y, drawFormat)
Next lp
' - 文字列を横書き -
drawFormat.FormatFlags = StringFormatFlags.DirectionRightToLeft
myGraph.DrawString(moj, myFont1, myBrush, 400.0, 320.0) '省略は横書き
myBrush.Dispose()
myFont1.Dispose()
myGraph.Dispose()
例4)画像(イメージ)表示関連
'---ピクチャBoxにImageを貼り付ける---
Dim moj As String, mySiz As Size, Image1 As Image
moj = ".\gazo.bmp"
If System.IO.File.Exists(moj) = False Then
PictureBox1.Image = Nothing
LabMssg.Text = "画像ファイルが無い:Picture_BoxのImageを消した"
Exit Sub
End If
'- PictureBox1.Image = System.Drawing.Image.FromFile(".\gazo.bmp") 'NetFrameWorkで貼り付ける時
'- PictureBox1.ImageLocation = moj 'VB機能で貼り付ける時(1):絵は出るがAutoSize=True要
'
Image1 = Image.FromFile(moj) 'VB機能で貼り付ける時(2)
PictureBox1.Image = Image1
PictureBox1.Size = Image1.Size
PictureBox1.AutoSize = False
'---上記のImageを縮小表示するとき---
Dim mySiz As Size, iXsiz As Integer, iYsiz As Integer, ratio As Single
'- Dim moj As String, Image1 As Image
'- moj = ".\gazo.bmp"
'- Image1 = Image.FromFile(moj)
iXsiz = PictureBox1.Size.Width ' Image1.Size.Width
iYsiz = PictureBox1.Size.Height ' Image1.Size.Height
ratio = iXsiz / iYsiz
iYsiz = iYsiz / 2 '1/2縮小するとき
If iYsiz < 32 Then iYsiz = 32
iXsiz = Fix(iYsiz * ratio + 0.5)
mySiz.Width = iXsiz
mySiz.Height = iYsiz
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage 'Boxサイズに合わせてImageを縮小するモード
PictureBox1.Size = mySiz
'---直接フォームに画像を表示(Draw)するボタンの例---
Dim DwgImgSw As Integer
Private Sub ButtDrawImg_Click _
(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles ButtDrawImg.Click
Dim g As Graphics = Me.CreateGraphics
If funExtisImg(TextBox1.Text) = True Then
g.Clear(Me.BackColor)
Call subDrawBmp1()
DwgImgSw = 1
Else
g.Clear(Me.BackColor) ' BackColorでクリア
DwgImgSw = 0
End If
g.Dispose() ' Resourceの解放
End Sub
Private Sub subDrawBmp1()
Dim factr As Single
factr = TextBoxFac.Text ' 0.33333 など
Dim myBmp As New Bitmap(TextBox1.Text)
Dim myRect As New Rectangle(5, 140, myBmp.Width * factr, myBmp.Height * factr)
Dim g As Graphics = Me.CreateGraphics
g.DrawImage(myBmp, myRect)
g.Dispose()
End Sub
Private Sub myForm1_Paint _
(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) _
Handles Me.Paint
If DwgImgSw = 1 Then Call subDrawBmp1()
End Sub
Private Function funExtisImg(ByVal argMoj As String) As Boolean
'-- argMoj:Path名の拡張子がBMPなどを表現している(=True)か、否か(=False) --
Dim moj As String
moj = LCase(System.IO.Path.GetExtension(argMoj)) '大文字あれば小文字にする
If moj = ".bmp" Or moj = ".jpg" Or moj = ".gif" Or moj = ".png" Then
funExtisImg = True
Else
funExtisImg = False
End If
End Function
(プログラム例:終)
サイト先頭へ戻る