0

小さなファイル エクスプローラーを開発しています。[戻る] ボタンを設定するにはどうすればよいですか。

私は持っている:

  • txtAddress.Textエクスプローラーのアドレスバーです。
  • string currAddress現在の住所を持っています。
  • List<string> prevAddress戻るボタンのために訪問されたいくつかの以前のアドレスを保持する必要があります

    そして私は使用します:

  • Root();マイ コンピュータのアイテムを取得します。
  • Open(string Address);アドレスからファイル/フォルダーを取得します。
  • Search(string Address, string keyword);検索結果の項目を取得します。

    戻るボタンが必要なのは、パスを検索するときに、検索していたパスに戻る必要があるため、上ボタン (親パスに移動する) を押すことができないためです。戻るボタンはどのように機能しますか冒険者?また、いつアドレスを追加/削除する必要がありますか?

    ここに画像の説明を入力

  • 4

    3 に答える 3

    3

    アプリケーションでこの状態を自分で維持/管理することをお勧めします。

    ユーザーがアドレスバーで新しい/異なるパスをナビゲート/強制するたびに、新しいディレクトリをアプリのリスト/コレクションに追加します。

    戻るボタンをクリックすると、リスト/コレクションで「前の」エントリを見つけることができます。それが表示するディレクトリです。

    Key    Val
      1     D:\
      2     D:\Foo
      3     D:\Foo\Bar
      4     C:\        (here the user may have manually typed into the addr bar)
    

    ディレクトリが存在しない、名前が変更された、利用できないなどの問題が発生する可能性があります。おそらく、これらのケースは既にコードで処理されています。Directory.Existsナビゲートする前に使用できます。

    于 2012-04-18T16:18:22.287 に答える
    1

    戻るボタンをうまく実装するには、ユーザーがいた場所を維持するある種のスタックを使用することをお勧めします。ナビゲーションが実行されるたびにpush、古い場所がスタックに追加されます。戻るボタンを押すとpop、スタックの一番上のアイテムがその場所に移動します。スタックが空の場合は、戻る場所がないため、戻るボタンを使用できなくします。

    于 2012-04-18T16:20:53.830 に答える
    1

    戻る (および進む) は、より一般的に議論されている (つまり、 「デザイン パターン」の本で言及されている) 元に戻すに非常に近いです。

    一般的な実装 - 「現在の状態」と 2 つのスタックに格納されている各操作の状態 (@p.campbell の回答で指摘されている): 1 つは元に戻す/戻る、もう 1 つはやり直し/進む。ユーザーが変更を加えるたびに (つまり、何かを入力するか、どこかをアクティブに移動することによって)、やり直し/転送スタックがクリアされ、前の状態が元に戻す/戻るスタックにプッシュされます。バック/フォワードは、現在の状態をスタックの 1 つに対応させ、別のスタックから次の状態をポップします。

    于 2012-04-18T16:51:11.820 に答える