0


我对 c# 编程很陌生,现在我遇到了一个很好的小问题,如果能得到一些帮助,我会非常感激的。
我知道我下面的示例行不通,但这只是为了让您了解我正在尝试做什么。
问题是我希望根据文件名使用文件内容更新不同的文本框...那么如何将 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

你在正确的路线上。

您只需确保TextBox在 if 测试分配Text属性之外声明:

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

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

使用通用字典消除 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 回答