2011-04-28 110 views
0

我为datagridview创建了一个usercontrol。
我在usercontrol中将它设置为gridview.autoGeneratecolumn = false;向datagridview添加列usercontrol

问题:如何将列添加到我的UI表单中的usercontrol?

  • 我不能可能不会使用相同的列添加默认列到用户控件的其他UI形式。

  • 如果我不把gridview.autoGeneratecolumn = false;,那么自动生成的列将显示我的数据库列名称,而不是我想显示给用户的名称。

回答

1

扩展的财产上述

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

然后,您可以遍历ColumnList和添加,也可以设置基本属性列

foreach(string s in ColList) 
{ datagridview1.Columns.Add(AddColumns(s)); } 
+0

@belinq你觉得这有用吗? – V4Vendetta 2011-04-28 11:37:04

+0

谢谢,它的工作原理。我已经替换了'public列表 _list = new List ();'用数组'public string [] Columns;',然后我更容易添加'baseGridView.Columns = new string [2] {“Name “,”密码“}; '你在想什么? – VeecoTech 2011-04-28 13:37:23

0

试试这个link如何与gridview.autoGeneratecolumn集中创建列false

1

你总是可以暴露在DataGridView的Columns属性为您的用户控件的属性。

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拖放到窗体或其他控件上,则可以在设计器属性窗口中访问Columns属性。

+0

谢谢你,我这样做以下成功。但是有没有更好的方法来提取或减少这些代码? baseGridView.dgvMain.Columns.Add(“Name”,“Name”); baseGridView.dgvMain.Columns.Add(“Password”,“Password”); baseGridView.dgvMain.Columns [“Name”]。DataPropertyName =“Name”; baseGridView.dgvMain.Columns [“Password”]。DataPropertyName =“Password”; UserBindingSource.DataSource = Users; – VeecoTech 2011-04-28 08:56:47

+0

如何通过列的列表,你可以循环和添加列 – V4Vendetta 2011-04-28 09:28:24

+0

你可以在taht上显示示例吗?谢谢 – VeecoTech 2011-04-28 09:37:46