繁体   English   中英

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

[英]how to change size of controls in different panels or forms (winform) c#

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

另一个问题是,如何找到程序中应用程序中控件的类型是什么?

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

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

如果您打算使用一个功能来处理多个OnClick-事件,则可以从发送方获取来源(发送方是处理程序实现的给定参数)

(如果这是问题所在,则应明确您要做什么并显示相关代码)

根据评论更改:

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

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

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

在思想上,您应该大致考虑一下您的方法,因为如果使用这样的循环,则似乎解决方案不正确。

最简单的方法是使用此扩展方法来遍历所有复选框

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM