2

這一點已經讓我難住了一小會兒。我使用一些合理的默認值創建派生的System.Windows.Forms.DataGridView控件。現在要清楚地說明它們只是默認值,應該可以在設計器中進行更改。截至目前我有默認值的控制構造被設置:在哪裏設置自定義控件的默認設置

using System.Drawing; 
using System.Windows.Forms; 

namespace TruckSmart.Controls 
{ 
    /// <summary> 
    /// An implementation of a System.Windows.Forms.DataGridView with sensible default values. 
    /// </summary> 
    public class DataGrid : System.Windows.Forms.DataGridView 
    { 
     /// <summary> 
     /// Initializes a new instance of the TruckSmart.Controls.DataGrid class. 
     /// </summary> 
     public DataGrid() 
     { 
      AllowUserToAddRows = false; 
      AllowUserToDeleteRows = false; 
      AllowUserToOrderColumns = false; 
      AllowUserToResizeColumns = false; 
      AllowUserToResizeRows = false; 
      AutoGenerateColumns = false; 
      AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; 
      AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells; 
      BackgroundColor = SystemColors.Window; 
      BorderStyle = BorderStyle.Fixed3D; 
      ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None; 
      Margin = new Padding(0); 
      MultiSelect = false; 
      ReadOnly = true; 
      RowHeadersVisible = false; 
      SelectionMode = DataGridViewSelectionMode.FullRowSelect; 

      AlternatingRowsDefaultCellStyle = new DataGridViewCellStyle() 
      { 
       BackColor = Color.FromKnownColor(KnownColor.AliceBlue) 
      }; 

      ColumnHeadersDefaultCellStyle = new DataGridViewCellStyle() 
      { 
       WrapMode = DataGridViewTriState.False 
      }; 
     } 
    } 
} 

使用構造函數中的主要問題是,當我關閉在Visual Studio和重新打開我的窗體設計它的構造函數被調用而且我之前在設計器中所做的任何更改都會重置。是否有一個特殊的地方我應該把這些默認值?

回答

2

不幸的是,你將不得不再次自己重新實現屬性:

[DefaultValue(false)] 
public new bool AllowUserToAddRows { 
    get { return base.AllowUserToAddRows; } 
    set { base.AllowUserToAddRows = value; } 
} 

關鍵字將覆蓋或陰影的基礎屬性,讓你改變它,然後。 10 DefaultValue屬性不會「設置」該屬性的值,它只是由設計者用來確定是否將值寫入設計器文件。您仍然必須在構造函數中設置默認值。

+0

@CrisMcLaughlin這個工程。看起來這是最簡單的解決方案。我不知道爲什麼有些人不喜歡使用'new'來影響基本成員,但在某些情況下(例如這種情況)它真的很有用。 –

+0

事實證明,它確實有效。我設置了錯誤的屬性......再次感謝! –

相關問題