-1

File.ReadAllTextを介してファイルから値を読み込み、 ListBox1 に直接読み込みます

ファイルは .txt - カンマ区切りです。

HealthyFood.Txt

内容

乳製品、果物、野菜、全粒穀物

Listbox1 (LstBox_HealthyCat) を簡単な方法で (条件を適用せずに) 設定するには、実際にはヘルパー メソッドをほとんど使用しないので、他のファイルに対してコードを繰り返す必要はありません (:

public string GetFileContent(string FileName)
{
    string Filecontent = "";
    string ExtTXT = ".txt";
    string initialDir = @"G:\RobDevI5-3xRaid-0\Projects\WindowsFormsApplication1\bin\x64\Debug\HealthFood\";

    Filecontent = File.ReadAllText(intialDir + FileName + ExtTXT);
    return Filecontent;

}

string[] HealthyFood = GetFileContent(HealthyFood).Split(',');
LstBox_HealthyCat.Items.AddRange(HealthyFood);

したがって、結果は ListBoxMainCategory になります

乳製品

果物

野菜

全粒粉

これまでのところ、新しい開発者にとっては良い例です

私の質問は、次のステップで、果物などの健康食品のサブカテゴリに入力したいと思います

果物.txt

コンテンツ:

リンゴ、バナナ、チェリー、デーツ

したがって、[メイン カテゴリ:果物] をクリック すると、ListBox2 に ListBox1 が選択され、残りの項目も listBox1 で使用できるようになります (クリックすると)。

私の代わりに

 Filecontent = File.ReadAllText(intialDir + FileName + ExtTXT);

ティム・シュメルターのコード:

 System.IO.Path.Combine(initialDir, item + ExtTXT); 

パスコンバイン...いいね!

4

2 に答える 2

1

私があなたの要件を正しく理解していれば、ListBox1 の SelectedItem(s) に従って 2 番目の ListBox を埋める必要があります。たとえば、fruit選択された場合はfruits.txt使用する必要があります。次に、これが役立つ場合があります。

const string initialDir = @"G:\RobDevI5-3xRaid-0\Projects\WindowsFormsApplication1\bin\x64\Debug\HealthFood\";
const string ExtTXT = ".txt";

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    listBox2.Items.Clear();
    foreach (String item in listBox1.SelectedItems)
    {
        String path = System.IO.Path.Combine(initialDir, item + ExtTXT);
        if(System.IO.File.Exists(path))
        {
            listBox2.Items.AddRange(System.IO.File.ReadAllText(path).Split(','));
        }
    }
}
于 2012-08-21T21:52:54.503 に答える
1

ListBox1 にカテゴリと同じ名前のファイルがある場合は、このカテゴリをヘルパー関数に渡し、結果を使用して ListBox2 に入力するだけです。

これは、SelectedIndexChanged イベントで簡単に実行できます。

private void LstBox_HealthyCat_SelectedIndexChanged(object sender, System.EventArgs e)
{
   // Get the currently selected item in the ListBox. 
   string curCategory = LstBox_HealthyCat.SelectedItem.ToString();
   string[] subCatItems = GetFileContent(curCategory).Split(','); 

   // Clear the previous list of foods from the second listbox
   ListSubCategory.Items.Clear();
   ListSubCategory.Items.AddRange(subCatItems); 
}

この例ではinitialDir、GetFileContent メソッド内の変数によって識別されるフォルダーに次のテキスト ファイルがあることを前提としています。

  • 乳製品.txt
  • 果物.txt
  • 野菜.txt
  • 全粒穀物.txt
于 2012-08-21T21:37:32.047 に答える