如何重构这个以便我不在每个方法中重复相同的代码?
private void setupTooltip(Grid obj)
{
var controls = obj.Children.OfType<System.Windows.Controls.TextBox>();
foreach (var control in controls)
{
control.ToolTip = "Code is <" + control.Name + ">";
}
}
private void setupTooltip(StackPanel obj)
{
var controls = obj.Children.OfType<System.Windows.Controls.TextBox>();
foreach (var control in controls)
{
control.ToolTip = "Code is <" + control.Name + ">";
}
}
答案 0 :(得分:3)
制作一个接收Panel
对象的方法。 StackPanel和Grid都从那里继承,你不会使用任何特定于控件的方法。
http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.aspx
http://msdn.microsoft.com/en-us/library/system.windows.controls.stackpanel.aspx
答案 1 :(得分:3)
private void setupTooltip(Panel obj)
{
var controls = obj.Children.OfType<System.Windows.Controls.TextBox>();
foreach (var control in controls)
{
control.ToolTip = "Code is <" + control.Name + ">";
}
}
答案 2 :(得分:1)
通过使用公共基类Panel
作为方法的参数,您可以对Grid
和StackPanel
使用以下方法:
private void setupTooltip(Panel panel)
{
var controls = panel.Children.OfType<System.Windows.Controls.TextBox>();
foreach (var control in controls)
{
control.ToolTip = "Code is <" + control.Name + ">";
}
}
答案 3 :(得分:0)
如果StackPanel
和Grid
共享公共基类或接口,则可以将方法的参数更改为该类型,然后删除第二种方法。