如何更改不同面板或窗体中控件的大小(winform)c

本文关键字:winform 控件 何更改 窗体 | 更新日期: 2023-09-27 18:20:07

我的表单中有一些复选框,其中一些复选框以特定的形式出现在面板中(两种不同的情况)
我放置了一个按钮,当用户点击该按钮时,所有复选框的大小都应该改变(在所有面板和表单中)。

另一个问题是,我如何才能发现我的应用程序中的控件类型是什么?

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

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

如何更改不同面板或窗体中控件的大小(winform)c

如果您计划使用一个Function来处理多个OnClick-事件,您可以从发送方获得来源(发送方是处理程序实现的给定参数)

(如果是这样的话,你应该明确你到底想做什么,并显示你的相关代码)

最简单的方法是使用此扩展方法循环所有复选框

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

根据注释更改:

您可以循环浏览所有控件以查找所有复选框:

    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)
    {
        // ...
    }

您可以为您的主窗体调用此方法。

记住,你应该考虑一下你的方法,因为如果你使用这样的循环,在你的解决方案中似乎有一些不正确的地方。