Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在设计时将“编辑列”对话框窗体上的标准DataGridViewColumns设置为不可见_C#_.net_Winforms_Datagridview - Fatal编程技术网

C# 如何在设计时将“编辑列”对话框窗体上的标准DataGridViewColumns设置为不可见

C# 如何在设计时将“编辑列”对话框窗体上的标准DataGridViewColumns设置为不可见,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我正在为自己的MyDataGridView控件开发自己的列 using System; using System.ComponentModel; using System.Drawing; using System.Text; namespace WindowsFormsApplication1 { public class MyDataGridView : System.Windows.Forms.DataGridView { } public class

我正在为自己的MyDataGridView控件开发自己的列

using System;
using System.ComponentModel;
using System.Drawing;
using System.Text;

namespace WindowsFormsApplication1
{
    public class MyDataGridView : System.Windows.Forms.DataGridView
    {
    }

    public class MyDataGridViewComboBoxColumn : System.Windows.Forms.DataGridViewComboBoxColumn
    {
    }

    public class MyDataGridViewTextBoxColumn : System.Windows.Forms.DataGridViewTextBoxColumn
    {
    }

    public class MyDataGridViewCheckBoxColumn : System.Windows.Forms.DataGridViewCheckBoxColumn
    {
    }

    public class MyDataGridViewButtonColumn : System.Windows.Forms.DataGridViewButtonColumn
    {
    }

    public class MyDataGridViewLinkColumn : System.Windows.Forms.DataGridViewLinkColumn
    {
    }

    public class MyDataGridViewImageColumn : System.Windows.Forms.DataGridViewImageColumn
    {
    }
}
我想知道是否可以在设计时在“编辑列”对话框窗体上隐藏System.Windows.Forms中定义的标准DataGridView列,这样我就可以只处理自己的列。

我想到了这个

using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class MyDataGridView : System.Windows.Forms.DataGridView
    {
        public override ISite Site
        {
            get
            {
                return base.Site;
            }
            set
            {
                base.Site = value;

                if (Site != null)
                {
                    IDesignerHost host = (IDesignerHost)Site.GetService(typeof(IDesignerHost));
                    if (host != null)
                    {
                        host.RemoveService(typeof(ITypeDiscoveryService));
                        host.AddService(typeof(ITypeDiscoveryService), new TypeDiscoveryService());
                    }
                }
            }
        }

        static readonly Type[] columnTypes = new Type[] 
                { 
                    typeof(MyDataGridViewButtonColumn), 
                    typeof(MyDataGridViewCheckBoxColumn), 
                    typeof(MyDataGridViewLinkColumn), 
                    typeof(MyDataGridViewImageColumn), 
                    typeof(MyDataGridViewComboBoxColumn), 
                    typeof(MyDataGridViewTextBoxColumn) 
                };

        class TypeDiscoveryService : ITypeDiscoveryService
        {
            ICollection ITypeDiscoveryService.GetTypes(Type baseType, bool excludeGlobalTypes)
            {
                return columnTypes;
            }
        }

    }

    [System.Windows.Forms.DataGridViewColumnDesignTimeVisible(true)]
    public class MyDataGridViewComboBoxColumn : System.Windows.Forms.DataGridViewComboBoxColumn
    {
    }

    [System.Windows.Forms.DataGridViewColumnDesignTimeVisible(true)]
    public class MyDataGridViewTextBoxColumn : System.Windows.Forms.DataGridViewTextBoxColumn
    {
    }

    [System.Windows.Forms.DataGridViewColumnDesignTimeVisible(true)]
    public class MyDataGridViewCheckBoxColumn : System.Windows.Forms.DataGridViewCheckBoxColumn
    {
    }

    [System.Windows.Forms.DataGridViewColumnDesignTimeVisible(true)]
    public class MyDataGridViewButtonColumn : System.Windows.Forms.DataGridViewButtonColumn
    {
    }

    [System.Windows.Forms.DataGridViewColumnDesignTimeVisible(true)]
    public class MyDataGridViewLinkColumn : System.Windows.Forms.DataGridViewLinkColumn
    {
    }

    [System.Windows.Forms.DataGridViewColumnDesignTimeVisible(true)]
    public class MyDataGridViewImageColumn : System.Windows.Forms.DataGridViewImageColumn
    {
    }




}
下图显示了代码的结果