■101262 / inTopicNo.1) |
OpenFileDialogで同じファイルを開くのを禁止する |
□投稿者/ エビ (4回)-(2023/01/24(Tue) 19:32:44)
|
分類:[.NET 全般]
こんばんは。
VB.NETでOpenFileDialogで同じファイルを開かないようにするには如何したらいいでしょうか?
参考サイト:https://dobon.net/vb/dotnet/form/openfiledialog.html
現在作っている事はファイルを追加する時、同じファイルを開かないように作りたいと思っております。
サイトの通りになるのですが、ファイル名はMP3です。
【ソースコードは以下になります。】
[Form2.vb]
Public Class Form2
'ファイルを開くとき同じファイルを開かないようにする
Private ReadOnly History As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
''' <summary>
''' 同じファイルを開かないようにする
''' </summary>
''' <param name="sender">OpenFile1</param>
Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
'同じファイルを開かないようにする
Dim files = OpenFileDialog1.FileNames
Dim conflict = files.Where(AddressOf History.Contains)
If conflict.Any() Then
e.Cancel = True
Dim fileNames = conflict.Select(AddressOf System.IO.Path.GetFileName)
MessageBox.Show("同じファイルがあります。" & vbCrLf & String.Join(vbCrLf, fileNames), "質問", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
Array.ForEach(files, AddressOf History.Add)
End If
End Sub
こちらのファイルを開く時のコードは
同じファイルは開かないようにしています。
>参考サイト:https://dobon.net/vb/dotnet/form/openfiledialog.html
で
''' <summary>
''' ファイル追加
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub ADDButton_Click(sender As Object, e As EventArgs) Handles ADDButton.Click
Dim k As New OpenFileDialog
k.Filter = "MP3(*.mp3)|*.mp3|OGG(*.ogg)|*.ogg|WAV(*.wav)|*.wav|AIFF(*.aiff)|*.aiff|全てのファイル (*.*)|*.*"
k.Multiselect = True
If k.ShowDialog = DialogResult.OK Then
For Each File As String In k.FileNames
ListView1.Items.Add(File)
Next
ListView1.Items(0).Selected = True
Timer1.Start()
End If
End Sub
と作りましたが、これだと同じファイルを開くと ListView1に同じファイルが追加されます。
【やりたい事】
ファイルを追加する時、同じファイルを開かないようにしたいです。
Dim k As New OpenFileDialogとkの文字列変数として作りました。
よろしくお願いいたします。
環境
windows 11
Vistual Stuido 2022
NET Frameworck 4.8
VB.NET
|
|