Refresh後にファイル選択の状態にするには?

解決


生茶  2005-06-21 03:50:02  No: 122823

度々失礼致します。

FileListBoxに関しましてご教授ください。

FileListBoxにおきまして、Refreshメソッドを実行した際、
それまで選択していましたファイル名がNonActiveとなってしまいます。
これを防ぐ良い方法は御座いませんでしょうか?

Refresh後にファイル選択状態にする方法です。

ご回答宜しくお願い致します。m(__)m


通ってみた  2005-06-21 09:32:44  No: 122824

ListIndex?


犬ひろし  2005-06-21 18:25:36  No: 122825

こんな感じ

    Dim vv As String
    Dim c As Long
    vv = File1.List(File1.ListIndex)
    File1.Refresh
    For c = 0 To File1.ListCount - 1
        If vv = File1.List(c) Then File1.Selected(c) = True
    Next c


生茶  2005-06-21 19:34:44  No: 122826

通ってみた様
犬ひろし様

  有難う御座いました。
FileListBoxのKeyDownイベントにてDeleteキー押下時に
ファイル削除機能を作成しておりました。
犬ひろし様のコードにて確認が取れましたので解決とさせて頂きます。
以下コードです。    有難う御座いました。

Private Sub File1_KeyDown(KeyCode As Integer, Shift As Integer)
    On Error GoTo ERRPOINT
   
    Dim YesNo As String
    Dim c As Long
    
    'ファイル削除機能「Deleteキー押下時」
    If KeyCode = vbKeyDelete Then
        YesNo = MsgBox("削除しますか?", vbYesNo + vbQuestion + vbDefaultButton2)
        If YesNo = vbYes Then
            If File1.FileName = "" Then
                goto ERRPOINT
            Else
                Kill (File1.Path & "\" & File.FileName)
                'リフレッシュ
                File1.Refresh
                'ファイル選択
                For c = 0 To File1.ListCount - 1
                    If File1.List(c) <> "" Then File1.Selected(c) = True
                Next c
            End If
        End If
    End If
    
ENDPOINT:
    Exit Sub
ERRPOINT:
    MsgBox "ファイル削除が出来ませんでした。", vbCritical, "エラーメッセージ"

End Sub


ぶぶ  2005-06-21 20:22:44  No: 122827

生茶さん>解決に書いてるコードと犬ひろしさんのコード
若干意味が変わってるようですが、本当にうごきましたか?
リフレッシュする前の名前の待避及びリフレッシュ後の比較がないんだけど・・・
気のせい?
生茶さんのコードだとリフレッシュ後に先頭の項目が選択状態になると思うんです
けど・・


生茶  2005-06-21 21:36:18  No: 122828

ぶぶ様

質問が悪かったのかもしれませんね。。

Deleteするので、ファイルがなくなってしまうのです。
私がほしい機能は、単に
>Refresh後にファイル選択状態にする方法
です。

ちなみに動いているのですが、何か不具合な箇所がありますでしょうか?f(**;
お気づきのところを教えてください。
宜しくお願いします。


ぶぶ  2005-06-21 22:28:38  No: 122829

ただ単に最初の項目を選択するのでよかったら
>File1.Refresh
>'ファイル選択
>For c = 0 To File1.ListCount - 1
>    If File1.List(c) <> "" Then File1.Selected(c) = True
>Next c
の部分は単に
File1.Refresh       
if File1.ListCount >0 then
    File1.Selected(0) = True
end if


生茶  2005-06-21 23:26:03  No: 122830

ぶぶ様

参考にさせて頂きます。

有難う御座いました。m(__)m


通ってみた  2005-06-22 04:21:26  No: 122831

For c = 0 To File1.ListCount - 1
    If File1.List(c) <> "" Then File1.Selected(c) = True
Next c

は、For〜Nextする意味がないので、

File1.selected(File1.ListCount-1) = True

だけで同じものが実装できると思うがどうでしょうか


生茶  2005-06-22 19:43:10  No: 122832

通ってみた様

  解決後のフォローを有難う御座います。

>File1.selected(File1.ListCount-1) = True

にて確認する事が出来ました。

私のほしい機能には
For〜Next文は不要でしたね・・・

あとは、Refresh後に先頭の項目を選択状態とするか、最後の項目を
選択状態とするかを検討し、

>if File1.ListCount >0 then
>    File1.Selected(0) = True
>end if

または

>File1.selected(File1.ListCount-1) = True

どちらかの方法で実装しようと思います。

有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加