• 締切済み

VB OpenFileDialogと読み込み

OpenFileDialogを使用したテキストファイルの読み込みについて質問します。 TextFile.txt, TextFile2.txt, TextFile3.txt(内容は名前,電話番号)というファイルがあるとし、OpenFileDialogで選択してラベルまたはテキストボックスに表示させたいのですが、TextFile.txti以外のファイルを選んでもTextFile.txtの内容が表示されます。 VBの本に載っている二つのコードをそのまま使用してみました。 Imports Microsoft.VisualBasic.FileIO Public Class Form1 ' decrare modul level variable 'モジュールレベルの宣言 Private NamePhoneTextFieldParser As TextFieldParser Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Instatiate the ThextFieldPerser and set the deliminate 'Deliminateの設定とか Dim Filestring As String = "TextFile.txt" Try NamePhoneTextFieldParser = New TextFieldParser(Filestring) NamePhoneTextFieldParser.TextFieldType = FieldType.Delimited NamePhoneTextFieldParser.SetDelimiters(",") Catch ex As Exception MessageBox.Show("Unable to read the file:" & Filestring, "File Error") End Try End Sub Private Sub OFDBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OFDBtn.Click Dim ReponseDialogResult As DialogResult Dim stream As System.IO.Stream ' Set up and display the OpenFileDialog 'OpenFIleDialogのセットアップ With OpenFileDialog1 .FileName = "TextFile.txt" .Title = "Directory for File" .Filter = "Text File (*.txt)|*.txt|All Files (*.*)|*.*" 'DIsplay Dialog Box ReponseDialogResult = .ShowDialog If ReponseDialogResult = DialogResult.OK Then stream = OpenFileDialog1.OpenFile() Else Exit Sub End If '電話番号と名前をファイルから読み取る On Error Resume Next Dim FieldString() As String ' Must be a strng array for deliminated fields If Not NamePhoneTextFieldParser.EndOfData Then FieldString = NamePhoneTextFieldParser.ReadFields() ' 最初の Field Nametxt.Text = FieldString(0) '二番目の Field Phonetxt.Text = FieldString(1) Else MessageBox.Show("No more records to display.", "End of Data") End If End With End Sub End Class です。 Dim Filestring As String = "TextFile.txt" NamePhoneTextFieldParser = New TextFieldParser(Filestring) または .FileName = "TextFile.txt" のどれかが影響しているのかなと疑っているのですが(特に前者)、合ってますでしょうか? 上記のコードでTextFile.txtを指定してしまっているのを、TextFile2.txt, TextFile3.txtと自分で選択したものを読み込ませて表示させたい場合、どう記述を変更したらよいでしょうか? ちなみにいずれのテキストファイルもカンマで区切られた一組の名前と電話番号です。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問の内容は、典型的な単品処理なのだから、Googleででも「VB2010 Openfiledialog」で 照会し、出てきた記事の2,3を見て組み合わせれば仕舞い。 質問者は、そこまでも学習が行ってないのだろう。苦労するしかない。 まずWindowsApplicationで出てきたフォームにツールボックスから コマンドボタンを1つ貼り付ける。 またコントロールのOpenFileDialogをツールボックスから貼り付ける コマンドボタンのクリックイベントに Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim ReponseDialogResult Dim openFileDialog1 As New OpenFileDialog() With openFileDialog1 .FileName = "TextFile.txt" .Title = "Directory for File" .Filter = "Text File (*.txt)|*.txt|All Files (*.*)|*.*" 'DIsplay Dialog Box End With If openFileDialog1.ShowDialog() = DialogResult.OK Then ''選択したファイルのパスを取得 MessageBox.Show(openFileDialog1.FileName & " を選択しました。") End If Dim sr As New System.IO.StreamReader(openFileDialog1.FileName) MessageBox.Show(sr.ReadToEnd) sr.Close() End Sub End Class をつくり、デバッグの開始。 フォームが現れるから、そこのボタンをクリックすると ファイルを開くダイアロウグが出る。 ここでテキストファイルを指定すると そのファイルの確認のフルパスが出て、OKでテキストが 出る(全部ではない場合が有り。 tryーcatchーfinallyはその後付け加える。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

stream と NamePhoneTextFieldParser に何の関連も無いですからね。 隣りの家で秋刀魚を焼いてて、自分の家では卵かけご飯を作って、 「秋刀魚が食べたいです」って言っているような文章をプログラミング 言語で書いてますね。 使われている英単語は中学レベルなのですから、普通に日本語に 読み替えていけば、文章としておかしいくらいは初心者にも分かり ますよ? 「フォームロード時に"TextFile.txt"でテキスト解析オブジェクト(TextFieldParser)を開く」 「ファイル"TextFile2.txt"を選択する」 「stream でファイル"TextFile2.txt"を開く」 「フォームロード時に開いたテキスト解析オブジェクトでデータ"TextFile.txt"を読み込む」 NamePhoneTextFieldParser の設定は、フォームロードした時ではなく、 OpenFileDialog1 でファイルが選択された後に行って下さい。 「ファイル"TextFile2.txt"を選択する」 「選択したファイルのパス"TextFile2.txt"でテキスト解析オブジェクト(TextFieldParser)を開く」 「テキスト解析オブジェクトでデータ"TextFile2.txt"を読み込む」 でしょう? OpenFileDialog1.FileName で選択したファイルパスが取れます。  NamePhoneTextFieldParser = New TextFieldParser(OpenFileDialog1.FileName) です。

関連するQ&A

  • vbのsavefiledialogについて

    vbで、テキストボックスに、文字を入力し、ボタン2をクリックすると、ユーザーが指定したところに、指定した名前で、txt形式、html形式、doc形式(このうち、txtと、htmlは必須。)で保存するプログラムを作りたいと思っております。 サイトを見てみますが、なかなかよいものが見つかりません。どなたか教えてください。 書きかけのプログラムと、フォーム図を載せておきます。 また、変更した方がよければ、そちらもおしえてください。 Public Class Form1 Dim texta As String Dim a Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Button1.Text = "リセット" Button2.Text = "保存" texta = TextBox1.Text End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged texta = TextBox1.Text End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click a = DialogResult SaveFileDialog1.OverwritePrompt = True SaveFileDialog1.FileName = "" SaveFileDialog1.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*" a = SaveFileDialog1.ShowDialog If a = Windows.Forms.DialogResult.OK Then Label1.Text = IO.Path.GetDirectoryName(SaveFileDialog1.FileName) Label2.Text = IO.Path.GetFileName(SaveFileDialog1.FileName) Else Label1.Text = "キャンセルされました。" Label2.Text = "" End If End Sub End Class

  • 重複した文字列をカウントして取り出したい

    初めて質問させていただきます。 VB初心者です。 ソートされた文字列の書き込まれたファイルを読み、 (文字列は、 ”000” ”001” ”001” ”001” ”002” ”002” ”003” といったように書き込まれています。) そこから、3つ連続して並んでいる文字列を探し出して、 その文字列と、3つ連続していた文字列がいくつあったのか表示するプログラムを作りたいのですが、 どうにも処理速度が遅く、さらに行数が1万を超えると、応答なしになってしまいます。 どなたか、上手い処理の方法があれば、ぜひともご教授の程をお願いします。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OpenFileDialog1.FileName = "" OpenFileDialog1.InitialDirectory = "c:\" If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then TextBox1.Text = My.Computer.FileSystem.ReadAllText _ (OpenFileDialog1.FileName, System.Text.Encoding.Default) End If End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim x As Integer Dim xyz As Integer '行数を調べる。 Dim i As Integer = TextBox1.Lines.Length TextBox2.Text = (i - 1 & "行") MessageBox.Show("一時停止") For ix = 0 To i - 2 '1行目と2行目を比較 If TextBox1.Lines(x) = TextBox1.Lines(x + 1) Then '2行目と3行目を比較 If TextBox1.Lines(x + 1) = TextBox1.Lines(x + 2) Then '3つある番号を記入。 TextBox2.Text = TextBox2.Text + vbCrLf + TextBox1.Lines(x + 2) '3回重複したことをカウント。 'MessageBox.Show("3発見") xyz = xyz + 1 Else End If Else End If '調べる行を+1 x = x + 1 Next TextBox2.Text = TextBox2.Text + vbCrLf + ("3つ以上は、" & xyz & "個") End Sub Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub End Class

  • VBでデバックするとエラーになる。

    VBでデバックすると下のようなエラーがでます ArgumentNullExceptionはハンドルされませんでした。 値を Null にすることはできません。 パラメーター名: activationContext VBを初めて日が浅いのでヘルプを読んでも意味が理解できませんでした。 なので、易しく回答してもらえると嬉しいです コードは下です Public Class Form1 'TextBox2に入力したURLをWebBrowser1で表示する Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click WebBrowser1.Navigate(TextBox2.Text) End Sub 'ブラウザ→戻るでWebBrowser1を処理する Private Sub 戻るToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 戻るToolStripMenuItem.Click WebBrowser1.GoBack() End Sub 'ブラウザ→進むでWebBrowser1を処理する Private Sub 進むToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 進むToolStripMenuItem.Click WebBrowser1.GoForward() End Sub 'ブラウザ→テキストボックスにURLを入力した時の処理 Private Sub ToolStripTextBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripTextBox1.Click WebBrowser1.Navigate(ToolStripTextBox1.Text) End Sub 'TextPageのタブをクリックした時のイベント Private Sub TabPage1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage1.Enter TextBox2.Visible = False Button1.Visible = False ブラウザToolStripMenuItem.Enabled = False 書式ToolStripMenuItem.Enabled = True ToolStripMenuItem1.Enabled = True End Sub 'BrowserPageのタブをクリックした時のイベント Private Sub TabPage2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage2.Enter TextBox2.Visible = True Button1.Visible = True ブラウザToolStripMenuItem.Enabled = True 書式ToolStripMenuItem.Enabled = False ToolStripMenuItem1.Enabled = False End Sub Private Sub 新規ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 新規ToolStripMenuItem.Click TextBox1.Text = ("") End Sub Private Sub 開くToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 開くToolStripMenuItem.Click Dim selectButton As DialogResult Dim filename As String selectButton = OpenFileDialog1.ShowDialog() filename = OpenFileDialog1.FileName If selectButton = DialogResult.OK Then Try TextBox1.Text = _ My.Computer.FileSystem.ReadAllText(filename, System.Text.Encoding.Default) Me.Text = "Visual Text" & filename Catch ex As Exception End Try End If End Sub Private Sub 保存ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存ToolStripMenuItem.Click Dim selectButton As DialogResult Dim filename As String selectButton = SaveFileDialog1.ShowDialog() filename = SaveFileDialog1.FileName If selectButton = DialogResult.OK Then Try My.Computer.FileSystem.WriteAllText(filename, TextBox1.Text, False, System.Text.Encoding.Default) Me.Text = "Visual Text" & filename Catch ex As Exception End Try End If End Sub Private Sub フォントToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles フォントToolStripMenuItem.Click Dim fd As New FontDialog() fd.Font = TextBox1.Font fd.Color = TextBox1.ForeColor fd.MaxSize = 19 fd.MinSize = 8 fd.FontMustExist = True fd.AllowVerticalFonts = False fd.ShowColor = True fd.ShowEffects = True fd.FixedPitchOnly = False fd.AllowVectorFonts = True If fd.ShowDialog() <> DialogResult.Cancel Then 'TextBox1のフォントと色を変える TextBox1.Font = fd.Font TextBox1.ForeColor = fd.Color End If End Sub End Class

  • VB添削

    このプログラムは 例えば3 3 4とテキストボックスに数字が打ち込まれると 3×3行列が4個分 のテキストボックスがでてきます。 ここに数字を打ち込んでいき、ボタン2を押すと3×3のテキスト トボックスが出てくると同時に足し算した結果が出てくるようにしたいです。 以下のプログラムはできたところまで作成しています。 どこを直せばよいのでしょうか。 Public Class Form1 Private number As Integer Private rows As Integer Private columns As Integer Private Sub Form11_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For i As Integer = 1 To 3 AddHandler Me.Controls("TextBox" & i).TextChanged, AddressOf TextBox_TextChanged Next End Sub Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) If System.Text.RegularExpressions.Regex.IsMatch(CType(sender, TextBox).Text, "[^0-9]") Then MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) With CType(sender, TextBox) .Text = .Text.Substring(0, .Text.Length - 1) .SelectionStart = .Text.Length End With End If Dim cnt1 As Integer Dim cnt2 As Integer Dim cnt3 As Integer If Integer.TryParse(TextBox1.Text, cnt1) And Integer.TryParse(TextBox2.Text, cnt2) And Integer.TryParse(TextBox3.Text, cnt3) Then For k = 1 To cnt3 For i = 1 To cnt1 For j = 1 To cnt2 Dim tb As TextBox = New TextBox() tb.Name = "tb" + i.ToString() Me.Controls.Add(tb) tb.Top = (i - 1) * 28 + 55 tb.Left = (j - 1) * 30 + 40 * (cnt2 * (k - 1)) + 10 tb.Width = 25 Next Next Next End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Bounds = New Rectangle(10, 10, 1350, 800) Me.AutoScroll = True End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sum As Double Dim cnt As Integer = 0 For i As Integer = 1 To rows For j As Integer = 1 To columns Dim tb As TextBox = New TextBox() cnt += 1 : If cnt > rows * columns Then cnt = 1 tb.Name = "tb" + cnt.ToString Me.Controls.Add(tb) tb.Top = (i - 1) * 30 + (80 + 40 * rows) tb.Left = (j - 1) * 60 + 10 tb.Width = 40 sum = 0 For k As Integer = 1 To number sum += Double.Parse(CType(Me.Controls("tb" + (cnt + (rows * columns * (k - 1))).ToString()), TextBox).Text) Next tb.Text = sum.ToString() Next Next End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub End Class

  • JISコードにエンコードすると、半角カタカナが全角になってしまう

    VB2005を使っています。 本を参考に「JISコードに変換する」コードを 記述してみましたが、どうも半角カタカナが全角になってしまうようです。 以下のようなコードです、 ご存知の方、よろしくお願いいたします。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '元の文字列 TextBox1.Text = "コネコ" '←ここの「コネコ」は半角で。 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim TextFile As IO.StreamWriter Dim Data() As Byte 'JISコードに変換 Data = Encoding.GetEncoding("iso-2022-jp").GetBytes(TextBox1.Text) 'ファイルに文字列を書き込む TextFile = IO.File.AppendText("C:\TEST.TXT") TextFile.Write(ChgString(Data)) TextFile.Close() MsgBox("osimai") End Sub Private Function ChgString(ByVal bytString As Byte()) As String Dim intCnt As Integer ChgString = "" For intCnt = 0 To UBound(bytString) ChgString &= Chr(bytString(intCnt)) Next End Function

  • VB初心者です。コードの書き方が分かりません。

    VB初心者です。 VBで(zのn乗)-(xのn乗+yのn乗)の計算が出来るようにしたいのですが、答えが必ず-1になってしまいます。 Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) End Sub End Class 正しいコードの書き方を教えて下さい。 また特定の答えのときにメッセージを表示したいのですが、どうすればいいですか?

  • VBでの日付入力値のフォーマットに関して

    教えて下さい。 環境:Visual Basic 2008 画面上にテキスト入力エリアを設け、日付を入力させたいと考えています。 その際に、あらかじめ"/"(スラッシュ)が表示されていて、そこへ数字のみを 入力し、例えば・・・20110101と入力された場合、2011/11/01と変換されて表示される ような形にしたいと考えています。 そこで、以下のようなサンプルを入手し、実行していますが、どうもうまくFormatが できません。 何が原因でしょうか??? Private Sub FRM_発注入力_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TXT_発注日.MaxLength = 10 End Sub Function SetDateStyle(ByVal myStr As String) As String Dim Temp As String Temp = Replace(myStr, "/", "") If Len(Temp) = 8 Then SetDateStyle = Format$(Temp, "YY/MM/DD") If IsDate(SetDateStyle) = False Then Beep() SetDateStyle = "" End If Else SetDateStyle = myStr End If End Function Private Sub TXT_発注日_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TXT_発注日.TextChanged TXT_発注日.Text = SetDateStyle(TXT_発注日.Text) End Sub TXT_発注日というテキスト入力エリアに入力され、変更があった場合に処理をするような 形となっています。 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。

  • VB ファイルの検索について

    VB ファイルの検索について こんにちは VB2008でファイルの種類を指定して、検索するプログラムを作っています。 要求: 1ボタンをクリックして、検索対象のフォルダを指定 2事前に決めたファイル種類(*.txt)を検索する 3(*.txt)がある場合はディスクトップにコピーする 今は1ができましたが、2と3について、どうやって書くのかわからないです。 --------------------ソース------------ Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim SourcePath As String Dim fdb As New FolderBrowserDialog With fdb 'Select to Folder and open it .Description = "Please Select Folder" .RootFolder = System.Environment.SpecialFolder.MyComputer SourcePath = TextBox1.Text .SelectedPath = SourcePath If fdb.ShowDialog() = DialogResult.OK Then TextBox1.Text = fdb.SelectedPath End If End With End Sub End Class ------------------------------------------------------- 以上  宜しくお願い致します。(^@^)

  • VB TEXT読み取りについて

    このコードでのデバックは成功したのですが、TEXTBOX1にファイルネーム C:\Users\???\Documents\???と入力しても’パスが拒否されました’と出てしまいます。 どう解決したらよいのでしょうか、宜しくお願いします。 Public Class Form1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sr As System.IO.StreamReader = Nothing Try Dim file As String = TextBox1.Text sr = New System.IO.StreamReader(file, System.Text.Encoding.GetEncoding("shift_jis")) Dim doc As String = "" Do Until sr.EndOfStream doc &= sr.ReadLine & vdcrlf() Loop TextBox2.Text = doc Catch ex As Exception MessageBox.Show(ex.Message, "read") Finally If sr IsNot Nothing Then sr.Close() sr.Dispose() End If End Try End Sub Private Function vdcrlf() As String Throw New NotImplementedException End Function End Class

  • VB2008でデリゲートの代わりにラムダ式が使えるというので、試してみ

    VB2008でデリゲートの代わりにラムダ式が使えるというので、試してみたのですが、うまくいきません。 試したコードは下記です。WindowsFormアプリで、Form1にButton1とLabel1を貼りつけております。 Button1を押すとLabel1に"はじめました"と表示し、2秒待ってから"おわりました"と表示するつもりです。 デリゲートを使った(2)は意図した動作をしますが、ラムダ式を使った(1)はLabel1に何も表示しません。 このようなことはできないのでしょうか? Public Class Form1 Private Delegate Sub longTaskDelegate() Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = "" Dim dlg As New longTaskDelegate(AddressOf LongTask) dlg.BeginInvoke(AddressOf longTaskCallback, dlg) End Sub Private Sub longTaskCallback(ByVal ar As IAsyncResult) Dim dlg As longTaskDelegate = DirectCast(ar.AsyncState, longTaskDelegate) dlg.EndInvoke(ar) End Sub Private Delegate Sub displayMessageDelegate(ByVal msg As String) Private Sub DisplayMessage(ByVal msg As String) If Label1.InvokeRequired Then Label1.Invoke(Function() Label1.Text = msg) ' --- (1) 'Label1.Invoke(New displayMessageDelegate(AddressOf Me.DisplayMessage), msg) ' --- (2) Else Label1.Text = msg End If End Sub Private Sub LongTask() DisplayMessage("はじめました") System.Threading.Thread.Sleep(2000) DisplayMessage("おわりました") End Sub End Class

専門家に質問してみよう