是否可以复制某个控件的所有属性?(C# 窗体) [英] It is possible to copy all the properties of a certain control? (C# window forms)

查看:25
本文介绍了是否可以复制某个控件的所有属性?(C# 窗体)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,我有一个带有蓝色 BackgroundColor 属性等的 DataGridView 控件,有没有一种方法可以将这些属性以编程方式传输或传递给另一个 <代码>DataGridView 控件?

For example, I have a DataGridView control with a Blue BackgroundColor property etc.., is there a way which I can transfer or pass programatically these properties to another DataGridView control?

像这样:

dtGrid2.Property = dtGrid1.Property; // but of course, this code is not working

谢谢...

推荐答案

你需要使用反射.

获取对源控件中每个属性的引用(基于其类型),然后获取"其值 - 将该值分配给目标控件.

You grab a reference to each property in your source control (based on its type), then "get" its value - assigning that value to your target control.

这是一个粗略的例子:

    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);
            }
        }
    }

这篇关于是否可以复制某个控件的所有属性?(C# 窗体)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆