C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: OpenFileDialogで同じファイルを開くのを禁止する


(過去ログ 176 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■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

引用返信 編集キー/
■101263 / inTopicNo.2)  Re[1]: OpenFileDialogで同じファイルを開くのを禁止する
□投稿者/ KOZ (385回)-(2023/01/25(Wed) 07:22:33)
No101262 (エビ さん) に返信
> Dim k As New OpenFileDialogとkの文字列変数として作りました。

なぜインスタンスを作成するんでしょうか?
OpenFileDialog1 を使えば良いのでは?

引用返信 編集キー/
■101264 / inTopicNo.3)  Re[1]: OpenFileDialogで同じファイルを開くのを禁止する
□投稿者/ radian (104回)-(2023/01/25(Wed) 09:11:22)
2023/01/25(Wed) 09:11:48 編集(投稿者)

No101262 (エビ さん) に返信
> VB.NETでOpenFileDialogで同じファイルを開かないようにするには如何したらいいでしょうか?
> 参考サイト:https://dobon.net/vb/dotnet/form/openfiledialog.html
> 現在作っている事はファイルを追加する時、同じファイルを開かないように作りたいと思っております。
> サイトの通りになるのですが、ファイル名はMP3です。
> (中略)
> と作りましたが、これだと同じファイルを開くと ListView1に同じファイルが追加されます。

OpenFileDialog自体にはそういった機能はないので、ファイルを選択した後に
ListView1に該当ファイルが存在するかどうかをチェックするしかなさそうな気はします。

引用返信 編集キー/
■101268 / inTopicNo.4)  Re[2]: OpenFileDialogで同じファイルを開くのを禁止する
□投稿者/ エビ (5回)-(2023/01/25(Wed) 18:21:00)
No101264 (radian さん) に返信
No101263 (KOZ さん) に返信

お二人の方回答ありがとうございます。
KOZさん
> OpenFileDialog1 を使えば良いのでは?

OpenFileDialog1で使ってみます。

radian さん
> OpenFileDialog自体にはそういった機能はないので、ファイルを選択した後に
> ListView1に該当ファイルが存在するかどうかをチェックするしかなさそうな気はします。

わかりました。チェック確認してみたいと思います。

また、質問当すると思いますが、よろしくお願いいたします。
解決済みと致します。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -