2017-03-05 23 views
1

自分のMyDataGridViewコントロール用に独自の列を開発しています。標準のDataGridViewColumnsをデザイン時に列の編集ダイアログフォームで非表示に設定するには

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の列を、隠すために知りたいのですが。

答えて

1

私はこれで出てきました。

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 
    { 
    } 




} 

画像は、以下のコード

enter image description here

の結果を示します
関連する問題