2011-12-22 67 views
0

我对这个模糊的标题表示歉意。我试图寻找更好的方式来做到这一点:识别WPF控件的最佳方法?

public void DoSomething(Textbox tb) 
{ 
    switch(tb.Name) 
    { 
     case "tbOne": 
      // Do something 
      break; 
     case "tbTwo": 
      // Do something else 
      break; 
    } 
} 

我不喜欢硬编码的文本框的名字,因为他们可以改变,打破我的代码。任何想法如何更好地做到这一点?

回答

1

你并不真的需要硬编码它,只是这样做的,而不是你拥有的一切:

public void DoSomething(Textbox tb) 
{ 
    if(tb == tbOne) 
    { 
    } 
    else if (tb == tbTwo) 
    { 
    } 
} 

如果他们改变,你会得到一个编译时异常=这样的话)。

+0

答案不知道为什么我没有没想到那个!谢谢! – ConditionRacer 2011-12-23 14:37:45

+0

很高兴我能帮忙=) – Carlo 2011-12-23 17:32:42

2

您可以使用文本框的标签属性,它可以容纳任何东西(任何对象,字符串,整数......),你想要的。

在很多情况下,你会发现,你在做什么是不需要的。如果你在问题中加入了什么是你正在努力完成的,你可能会得到更好的建议。

+0

不能强调第二段不够......我们人类没有得到它在第一时间知道,所以你越告诉我们,好你 – Adam 2011-12-22 20:16:07

0

应该有依赖关系图向上的UserData入口的地方,但无法找到它在MSDN上。

如何使用Tag属性(see here)来存储可用于识别的值?