首页 > 解决方案 > 在表单上多次放置相同的控件(以编程方式)

问题描述

我创建了一个 DataGridView 并根据需要设置它的属性。
问题是我可以在 application 中有四个外观相同的 DataGridView ,这取决于我的应用程序中的某些条件。我想知道我是否可以通过编程方式创建一个 DataGridView 实例并从原始 DataGridView 复制所有属性,以便我有 2、3、4 个相同的 DataGridView?

我知道可以通过设计器实现,但是如何以编程方式复制它?


我听说过扩展方法,但有更简单的方法吗?


编辑:我添加了新方法:

private void copyControl(Control sourceControl, Control targetControl)
    {
        // make sure these are the same
        if (sourceControl.GetType() != targetControl.GetType())
        {
            throw new Exception("Incorrect control types");
        }

        foreach (PropertyInfo sourceProperty in sourceControl.GetType().GetProperties())
        {
            object newValue = sourceProperty.GetValue(sourceControl, null);

            MethodInfo mi = sourceProperty.GetSetMethod(true);
            if (mi != null)
            {
                sourceProperty.SetValue(targetControl, newValue, null);
            }
        }
    }



   DataGridView dgw = new DataGridView();
   copyControl(PartsDgv, dgw);


我得到了这个例外
在此处输入图像描述

标签: c#datagridviewcontrols

解决方案


推荐阅读