C# 向datagridview用户控件添加列

C# 向datagridview用户控件添加列,c#,winforms,datagridview,C#,Winforms,Datagridview,我为datagridview创建了一个usercontrol。 我将其设置为gridview.autoGeneratecolumn=false public partial class MyUserControl : UserControl { // This property will be visible in your usercontrols property window in the designer public DataGridViewColumnCollecti

我为datagridview创建了一个usercontrol。
我将其设置为
gridview.autoGeneratecolumn=false

public partial class MyUserControl : UserControl
{
    // This property will be visible in your usercontrols property window in the designer
    public DataGridViewColumnCollection Columns
    {
        get { return dataGridView1.Columns; }
    }

    public MyUserControl()
    {
        InitializeComponent();

        this.dataGridView1.AutoGenerateColumns = false;          
    }
}
问题:如何在UI表单中向usercontrol添加列

  • 我无法向usercontrol添加默认列,因为其他UI表单可能不使用相同的列

  • 如果我没有将
    gridview.autoGeneratecolumn=false,则自动生成的列将显示我的数据库列名称,而不是我要向用户显示的名称


试试如何使用
gridview创建列。autoGeneratecolumn
设置为
false
您可以始终将datagridview的columns属性作为usercontrol的属性公开

public partial class MyUserControl : UserControl
{
    // This property will be visible in your usercontrols property window in the designer
    public DataGridViewColumnCollection Columns
    {
        get { return dataGridView1.Columns; }
    }

    public MyUserControl()
    {
        InitializeComponent();

        this.dataGridView1.AutoGenerateColumns = false;          
    }
}

如果将usercontrol放到窗体或其他控件上,则可以在designer属性窗口中访问Columns属性。

扩展上述属性

private List<string> _list = new List<string>();
private List<string> ColList
{
    get { return _list; }
    set { _list = value; }
}

private DataGridViewTextBoxColumn AddColumns(string Name)
        {
            DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn()
            col.Name = Name;
            col.HeaderText = Name;
            col.HeaderCell.Style.WrapMode = DataGridViewTriState.NotSet;
            col.ToolTipText = Name;
            col.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;            
            col.MinimumWidth = 80;
            col.DataPropertyName =Name;            
            return col;
        }

谢谢,我成功地做到了以下几点。但是,有没有更好的方法来提取或减少此代码?baseGridView.dgvMain.Columns.Add(“Name”、“Name”);baseGridView.dgvMain.Columns.Add(“密码”、“密码”);baseGridView.dgvMain.Columns[“Name”].DataPropertyName=“Name”;baseGridView.dgvMain.Columns[“Password”].DataPropertyName=“Password”;UserBindingSource.DataSource=用户;传递列的列表如何,您可以循环并添加columns@belinq我加了一个例子。。请查收,希望您能找到useful@belinq你觉得这个有用吗?谢谢,它有用。我已经替换了
公共列表_List=new List()带有数组
公共字符串[]列,那么我就更容易添加`baseGridView.Columns=新字符串[2]{“Name”,“Password”};`你认为呢?