如何更改不同面板或表单中控件的大小(winform)c#

时间:2014-09-01 08:34:38

标签: c# winforms controls

我的表单中有一些复选框,其中一些复选框位于特定形式的面板中(两种不同的问题) 我放置了一个按钮,当用户点击它时,所有复选框的大小应该改变(在所有面板和表格中)。

另一个问题是,如何以编程方式找到我的应用程序中的控件类型?

感谢您的帮助。
我放了一个按钮并添加了一个事件处理程序 为了建立控件的类型,我使用了控件的名称 这是我的尝试:

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

3 个答案:

答案 0 :(得分:1)

如果您打算使用一个函数来处理多个OnClick - 事件,您可以从发件人那里获取原点(发件人是处理程序实现的给定参数)

(如果这是问题,你应该清楚你想要做什么并显示你的相关代码)

答案 1 :(得分: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)
    {
        // ...
    }

您可以为主表单调用此方法。

记住,你应该考虑一般的方法,因为如果你使用这样的循环,似乎你的解决方案中的某些东西是不对的。

答案 2 :(得分:0)

最简单的方法是使用this extension method循环遍历所有复选框

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

如果没有这个,你将不得不单独在面板上循环

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