2014-09-01 39 views
1

我的窗體中有一些複選框,其中一些複選框以特定形式(兩個不同的問題)在面板中。
我放置了一個按鈕,當用戶點擊該按鈕時,所有複選框的大小都會改變(在所有面板和表單中)。如何更改不同面板或窗體中控件的大小(winform)c#

而另一個問題是,我怎麼能發現,我的應用程序中的控件類型編程?

感謝您的幫助。
我放了一個按鈕,並添加了一個事件處理程序。
和創始控制的類型,我使用的控制 這裏的名字是我的嘗試:

  foreach (Control ctrl in this.Controls) 
       if (ctrl.Name.Contains("combo")) 
        checkbox1.SetSize = new Size(40,40); 
+2

您是否嘗試過什麼板?顯示你的代碼。 – Hassan 2014-09-01 08:35:46

+0

您目前對第一個問題有什麼問題?你的第二個問題取決於你所需的用法。 – Sayse 2014-09-01 08:36:14

+0

@Sayse我想知道控件的類型。 – user3787313 2014-09-01 08:40:39

回答

1

如果你打算使用一個函數來處理多的OnClick - 事件,你可以得到的來源出來發件人(發件人是處理程序實現給定參數)

(如果是這樣的問題,你應該clearify你想做的事,並顯示您的相關代碼到底是什麼)

0

變化根據評論:

您可以遍歷所有控件查找所有的複選框:

private void ProcessControls(Control containerControl) 
    { 
     foreach (Control control in containerControl.Controls) 
     { 
      if (control is CheckBox) 
      { 
       ChangeCheckBoxProperties((CheckBox)control); 
      } 
      else 
      { 
       ProcessControls(control); 
      } 
     } 
    } 

    private void ChangeCheckBoxProperties(CheckBox cb) 
    { 
     // ... 
    } 

您可以調用此方法爲您的主要形式。請記住,你應該考慮一般的問題,因爲如果你使用這樣的循環,看起來你的解決方案中有些東西是不正確的。

+0

謝謝。你說得對,那是我忘了的答案。但是我的問題的答案是什麼? – user3787313 2014-09-01 08:43:46

+0

@ user3787313我已更新答案,請檢查。 – ntl 2014-09-01 09:00:21

+0

你是什麼意思,那是不對的? – user3787313 2014-09-01 09:01:12

0

最簡單的方法是使用this extension method遍歷所有複選框

foreach(var checkBox in this.GetAll<CheckBox>()) 
    checkBox.Size = new Size(40,40); 

沒有這一點,你將不得不遍歷seperately

foreach(var panel in this.Controls.OfType<Panel>()) 
    foreach(var checkbox in panel.Controls.OfType<CheckBox>()) 
     //set size in panel 

foreach(var checkbox in this.Controls.OfType<CheckBox>()) 
    //set size in form 
+0

擴展方法應該在靜態類中定義,那我該如何在winform中使用它? – user3787313 2014-09-01 08:55:59

+0

@ user3787313 - [擴展方法msdn](http://msdn.microsoft.com/zh-CN/library/bb383977.aspx) – Sayse 2014-09-01 08:58:11

相關問題