2014-09-03 128 views
0

我在這裏有這段代碼,我用它來繪製控件,我使用foreach來檢查每個元素。避免多次編碼循環一次

foreach (e.Control ctrl in Sheet1.Controls) 
{ 
    switch (ctrl.TYPE) 
    { 
     case "StaticText": 
      CompareControls.StaticText lbl = new CompareControls.StaticText(); 
      page1.tabPage1.Controls.Add(lbl); 
       break; 
     case "CheckBox": 
       break; 
    } 
} 

我需要爲Sheet2.Controls完全相同,我該如何避免複製粘貼?

+3

創建一個方法,可以將Sheet作爲參數 – Sayse 2014-09-03 07:45:58

+0

請詳細說明一下嗎?我對方法不太好 – 2014-09-03 07:46:56

+0

Sheet1,Sheet2的類型是什麼。將該類型作爲參數傳遞給一個方法,並通過它循環。 – 2014-09-03 07:47:10

回答

0

創建這需要在控制集合作爲參數的方法。喜歡的東西:

private void Function(IEnumerable<Control> controls) 
     { 
      foreach (e.Control ctrl in controls) 
      { 
       switch (ctrl.TYPE) 
       { 
        case "StaticText": 
         CompareControls.StaticText lbl = new CompareControls.StaticText(); 
         page1.tabPage1.Controls.Add(lbl); 
         break; 
        case "CheckBox": 

         break; 
       } 
      } 
     } 

然後,你可以把它叫做:

Function(Sheet1.Controls); 
+0

的書,所以我的變量表達爲這樣的一個地方:Sheet1.Controls,它是什麼類型的變量? – 2014-09-03 07:51:12

0

你應該將其解壓縮到一個單獨的方法(可能靜態)

public static void MethodName (IEnumerable<Control> controls) 
{ 
    foreach (var ctrl in controls) 
    { 
     switch (ctrl.TYPE) 
     { 
      case "StaticText": 
       CompareControls.StaticText lbl = new CompareControls.StaticText();   
       page1.tabPage1.Controls.Add(lbl);   
       break; 

      case "CheckBox":   
       break;   
      } 
    } 
} 
0

什麼是工作表Sheet1,Sheet2的類型。說 - 表。

private void loopThroughSheet(Sheet _sheet) 
{ 
    foreach (e.Control ctrl in _sheet.Controls) 
      { 
       switch (ctrl.TYPE) 
       { 
        case "StaticText": 
         CompareControls.StaticText lbl = new CompareControls.StaticText(); 


         page1.tabPage1.Controls.Add(lbl); 

         break; 

        case "CheckBox": 

         break; 

       } 
      } 
} 

現在在你的主代碼只需要調用loopThroughSheet(Sheet1)loopThroughSheet(Sheet2)

+0

如何在方法中添加另一個整數,我需要解析和整數 – 2014-09-03 08:00:16

+0

這是如何訪問工作表本身:public e.Sheet Sheet1 {get;組; },我如何解析它在loopThroughSheet方法?作爲什麼類型? – 2014-09-03 08:03:49

0

使用過載這種方式

foreach (e.Control ctrl in Sheet1.Controls) 
{ 
    DoOperation(ctrl) 
} 

話外

public void function DoOperation(CompareControls.StaticText ctrl){ 
    CompareControls.StaticText lbl = new CompareControls.StaticText(); 
    page1.tabPage1.Controls.Add(lbl); 
} 

public void function DoOperation(CheckBox ctrl){ 

} 

這樣你可以管理每個控制類型,無需添加case i在switch。您只需添加DoOperation函數的重載功能

+0

請這是我表達sheet1 public e.Sheet Sheet1 {get;組; },它是什麼類型? – 2014-09-03 08:06:13

+0

@AniAni我想表單類型 – faby 2014-09-03 08:09:47