かなりストレートです。ボタンを押し、ダイアログボックスからパスを選択し、パスのサブディレクトリを検索し、それらをメッセージボックスに表示します。しかし、いくつかの問題に遭遇しました。この小さな(おそらく単純な)DirectoryInfo構文エラーを修正する方法を教えてください。
private void InputButton_Click(object sender, RoutedEventArgs e)
{
//CHECKS TO SEE IF "OK" WAS CLICKED IN DIALOGBOX
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
}
//SELECTS DIRECTORY PATH
Path.GetDirectoryName(fbd.SelectedPath);
string path = Path.GetDirectoryName(fbd.SelectedPath);
InputDirectory_Box.Text = path;
//SELECTS SUBDIRECTORIES FROM PATH
string[] subdirectories = DirectoryInfo.GetDirectories(path);
for (int i = 0; subdirectories.Length+1 >= 0; i++)
{
MessageBox.Show(subdirectories[i]);
}
}
ラインstring[] subdirectories = DirectoryInfo.GetDirectories(path);
は、それが非静的フィールドのオブジェクト参照を必要と述べています。私はすでにそれを検索する文字列を与えるpath
を宣言しました。私はディレクトリクラス(DirectoryInfo
クラスではない)のコードと構文とまったく同じ行を使用しており、合法的でした。しかし、Directory.GetDirectories
を使用しているときに問題が発生していました。何らかの理由でsubdirectories
の代わりに親のというディレクトリが見つかりました。
誰にいくつかの光を当てることができれば:
A - あなたはなぜそれがパスからではなくサブディレクトリの
を親ディレクトリを返していましたでしょう - なぜ私はこの構文エラー
Bを取得していますヒーローになる。多くのありがとう
PS私は完全にプログラミングに慣れていて、列挙/列挙はまだかなりわかりません。もしそれが何か関係があれば、私は小さな例かそれとも何らかの文脈を感謝するでしょうです。
読み込み中に、配列の末尾からlength-1までのインデックスを後方にインデックスできることを学びました。長さ+ 1が配列の始点になると私は考えました。 コードを書き直していただきありがとうございます。しかし、私はまた、DirectoryInfoクラスの使い方を理解しようとしています。具体的には、DirectoryInfo.GetDirectoriesはDirectoriesクラスとは異なります。私は誰かがこれに答えたと思う。インスタンス化する必要があります。 – Aspen