0


私はC#プログラミングにまったく慣れていないので、ちょっとした問題を抱えています。助けていただければ幸いです。
以下の例がうまくいかないことはわかっていますが、これは私が何をしようとしているのかを示すためのものです。
問題は、ファイル名に応じて、ファイルの内容で異なる textBoxes を更新したいということです...では、textBox.text または textBox を何かにどのように割り当てますか?

public void OnChanged(object source, FileSystemEventArgs e)
{
   string newPath = Path.Combine(activeDir, "Files");
   string fileName = e.Name;

   if (fileName.StartsWith("O1"))
     TextBox txtBox = textBoxNC1;
   if (fileName.StartsWith("O2"))
     TextBox txtBox = textBoxNC2;
   if (fileName.StartsWith("O3"))
     TextBox txtBox = textBoxNC3;
   if (fileName.StartsWith("O7"))
     TextBox txtBox = textBoxNC4;
   if (fileName.StartsWith("O0"))
     TextBox txtBox = textBoxNC5;

   StreamReader rdr = new StreamReader(file);
   txtBox = rdr.ReadToEnd();
   rdr.Close();
}

敬具
Hjalmarsson

4

2 に答える 2

3

あなたは正しい線にいます。

if test がプロパティTextBoxを割り当てる外側を宣言することを確認してください:Text

TextBox txtBox;
if (fileName.StartsWith("O1")
{
    txtBox = textBoxNC1;
}
....

if (txtBox != null)
{
    txtBox.Text = rdr.ReadToEnd();
}
于 2011-01-13T15:39:43.793 に答える
2

一般的な Dictionary を使用して ifs を排除するための少し異なるアプローチ:

Dictionary<string, TextBox> lookup = new Dictionary<string, TextBox>();

lookup["O1"] = textBoxNC1;
lookup["O2"] = textBoxNC2;
lookup["O3"] = textBoxNC3;
lookup["O7"] = textBoxNC4;
lookup["O0"] = textBoxNC5;

var prefix = fileName.SubString(0, 2);

if (lookup.ContainsKey(prefix))
{
  using (var reader = new StreamReader(file))
  {
    lookup[prefix].Text = reader.ReadToEnd();
  }
}
于 2011-01-13T15:48:13.290 に答える