2012-11-26 26 views
0

我該如何重構這個,以便我不重複每個方法中的相同代碼?重載方法,重用代碼

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 + ">"; 
     } 
    } 
+1

什麼是'Grid',什麼是'StackPanel'?他們是否共享一個共同的基類或接口? –

+0

WPF窗體組件 – user1320651

+0

System.Windows.Controls – user1320651

回答

0

如果StackPanelGrid共享公共基類或接口,您可以更改參數爲你的方法,以該類型並刪除了第二種方法。

3
Children

Panel類中定義。

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 + ">"; 
    } 
} 
1

通過使用公共基類Panel作爲方法的參數,你可以使用兩個GridStackPanel以下方法:

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 + ">"; 
    } 
} 
+0

謝謝大家,好像完成了它的工作! – user1320651