2011-04-28 43 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