参考:プログラム例(他にもやり方は多くあるが、一つの例として)

例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



 (プログラム例:終)

サイト先頭へ戻る